2015-10-30 13 views
5

Şişenin oluşturduğu bir web sayfasına bir düğme koymak ve kullanıcı düğmeyi tıklattığında bir kullanıcının html sayfasını bir dosya olarak indirmesine izin vermek istiyorum. Hayal ettiğim şey, oluşturulan html'yi BytesIO içine kaydetmek ve send_file aracılığıyla göndermek gibi bir şeydir, ancak oluşturulan sayfayı bir dosya nesnesine nasıl kaydedeceğimi bulamıyorum. Bunu nasıl yapabilirim?Flask tarafından oluşturulmuş html sayfası indirme

+0

Ctrl-s veya sağ tuşa> Sayfayı farklı kaydet gibi mi? Neden sadece onlara izin verme? Bu görüntüler ve diğer bağlantılı kaynaklar ile bile ilgilenebilir. – davidism

+0

Yorum için teşekkürler! Bir kaç neden var; her şeyden önce, bu web sayfası teknoloji meraklısı olmayan insanlar içindir, bu yüzden onların hileyi bilmelerini beklemiyorum; İkincisi, hemen hemen aynı bir web sayfası vermek istiyorum; son olarak, özellikle tarayıcıların bir web sayfasını çok iyi bir şekilde kaydetme işini yaptıklarına inanmıyorum çünkü kişisel olarak birkaç başarısızlık yaşadım. Bu arada, bu web sayfası bilimsel veriler oluşturmakla ilgilidir, böylece içerik ve hedef kitle her zamanki web sayfasından biraz farklıdır. –

cevap

4

Böyle bir şey deneyebilirsiniz:

import StringIO 
from flask import Flask, send_file, render_template 

def page_code(): 
    strIO = StringIO.StringIO() 
    strIO.write(render_template('hello.html', name='World')) 
    strIO.seek(0) 
    return send_file(strIO, 
        attachment_filename="testing.txt", 
        as_attachment=True) 

Bu test edilmemiştir ama size bir fikir verecektir.

+0

Çok teşekkür ederim! Ben bir render içinde tüm html sayfa dönmek için render_template'' beklemiyordum, bu API belge geri dönüş değeri hakkında bir şey söylemez, çünkü belki de bu sahne arkasında daha fazla olacağını düşündüm Sadece özledim. Bu problemi çözer. –

İlgili konular