2015-10-30 5 views
5

मैं फ्लास्क से जेनरेट किए गए वेब पेज पर एक बटन डालना चाहता हूं और जब उपयोगकर्ता बटन पर क्लिक करता है तो उपयोगकर्ता को HTML पृष्ठ को फ़ाइल के रूप में डाउनलोड करने दें। मैं कल्पना करता हूं कि BytesIO में प्रस्तुत एचटीएमएल को सहेजने की तरह कुछ है और इसे send_file के माध्यम से भेजें, लेकिन मुझे यह नहीं पता कि प्रस्तुत पृष्ठ को फ़ाइल ऑब्जेक्ट में कैसे सहेजना है। मैं उसे कैसे कर सकता हूँ?फ्लास्क से उत्पन्न एचटीएमएल पेज डाउनलोड करना

+0

आपका मतलब है ctrl-s या दायाँ क्लिक> पृष्ठ को बचाने के रूप में? उन्हें ऐसा क्यों न करने दें? यह छवियों और अन्य लिंक किए गए संसाधनों का भी ख्याल रख सकता है। – davidism

+0

टिप्पणी के लिए धन्यवाद! कुछ कारण हैं; सबसे पहले, यह वेब पेज उन लोगों के लिए है जो तकनीक-समझदार नहीं हैं, इसलिए मैं उन्हें चाल जानने की उम्मीद नहीं करता; दूसरा, मैं उन्हें लगभग वही देना चाहता हूं लेकिन बिल्कुल वही वेब पेज नहीं; आखिरकार, मुझे विशेष रूप से विश्वास नहीं है कि ब्राउज़र एक वेब पेज को बहुत अच्छी तरह से सहेजने का काम करते हैं, क्योंकि मैंने व्यक्तिगत रूप से कुछ विफलताओं का अनुभव किया है। वैसे, यह वेब पेज वैज्ञानिक डेटा उत्पन्न करने के बारे में है, इसलिए सामग्री और लक्षित दर्शक सामान्य वेब पेज से थोड़ा अलग हैं। –

उत्तर

4

आप कुछ इस तरह की कोशिश कर सकते:

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) 

यह परीक्षण नहीं किया है, लेकिन आप एक विचार देना चाहिए।

+0

आपको बहुत बहुत धन्यवाद! मैंने पूरे एचटीएमएल पेज को एक स्ट्रिंग में वापस करने के लिए '' 'render_template''' की अपेक्षा नहीं की थी, मैंने सोचा था कि यह दृश्य के पीछे से अधिक कर रहा है क्योंकि एपीआई दस्तावेज़ इसके रिटर्न वैल्यू के बारे में कुछ नहीं कहता है, या शायद मैंने बस इसे याद किया। यह समस्या हल करता है। –

संबंधित मुद्दे