2013-01-07 4 views
5

पर कॉल करने के लिए कैसे करें मेरे पास एक साधारण फ्लास्क ऐप है और मैं @ app.before_request का उपयोग करना चाहता हूं, लेकिन किसी भी तरह से यह काम नहीं करता है! मुझे यकीन है कि मैं इस बारे में सही ढंग से सोच नहीं रहा हूँ! जाहिरा तौर पर यह की तरह कुछ का उपयोग कर का आह्वान किया जाएगा:@ app.before_request

return redirect(url_for('index')) 

लेकिन मैं इसके लिए कहा जा करने की जरूरत है:

return render_template('index.html') 

किसी को भी मदद कर सकते हैं?

उत्तर

6

यदि आप कुछ कोड देंगे तो शायद आपके प्रश्न को समझना बेहतर होगा, लेकिन अगर मैं इसे समझता हूं तो आप अनुरोध से ठीक पहले टेम्पलेट प्रस्तुत करना चाहते हैं?

before_request कुछ फ़ंक्शन कॉल करने या अनुरोध से पहले कुछ कार्रवाई करने के लिए उपयोग किया जाता है। तो मूल रूप से यह आपके ऐप को आने वाले अनुरोध से निपटने के लिए तैयार करना है। उदाहरण: डेटाबेस कनेक्शन प्रारंभ करें और बाद में पहुंच के लिए इसे g ऑब्जेक्ट में रखें। before_request उपयोग के

उदाहरण (जैसे उदाहरण के लिए डीबी प्रारंभ) है:

@app.before_request 
def before_request(): 
    g.db = connect_db() 

आप @app.before_request रूप में इसका इस्तेमाल करते हैं तो यह डेकोरेटर है। Flask docs

में कुछ और पाया जा सकता है लेकिन एक और बात यह है कि आप render_template अनुरोध से ठीक पहले क्यों चाहते हैं? मुझे लगता है कि आपको इस स्थान पर विचारों में टेम्पलेट प्रस्तुत करना चाहिए। आप अनुरोध को अपने ऐप, अपने दृश्य तक पहुंचने दें और फिर वहां टेम्पलेट प्रस्तुत करें।

+0

हाय इग्नास, मैं वास्तव में अनुरोध के बाद टेम्पलेट प्रस्तुत करना चाहता हूं! मैं 'वापसी render_template() '' app.before_request' को' रिटर्न रीडायरेक्ट() 'के रूप में ट्रिगर करने के लिए चाहता हूं! मैं अब इसके लिए (रीडायरेक्ट का उपयोग कर) प्राप्त करता हूं लेकिन फिर भी सोच रहा हूं कि यह अभी भी करने योग्य है! – Amin