2014-11-16 4 views
11

मैं समझने के लिए सबसे अच्छा अनुप्रेषित और बोतलमैं फ्लास्क के रीडायरेक्ट (url_for()) में तर्क कैसे पास कर सकता हूं?

नीचे मेरी कोड है का उपयोग करते हुए, मैं खोजने रहा है कि x और y टेम्प्लेट में नहीं कर रहे हैं तर्क पारित करने के लिए कोशिश कर रहा हूँ।

क्या मेरा वाक्यविन्यास सही है? क्या मुझे कुछ बुनियादी याद आ रही है? मैं टेम्पलेट रेंडर करने के लिए कर रहा हूँ, लेकिन मैं नहीं बल्कि सिर्फ find.html

@app.route('/found') 
def found(email,listOfObjects): 
    return render_template("found.html", 
     keys=email,obj=listOfObjects) 

@app.route('/find', methods=['GET','POST']) 
def find(): 
    if request.method == 'POST': 
     x = 3 
     y = 4 
     return redirect(url_for('found',keys=x,obj=y)) 

    return render_template("find.html") 

उत्तर

29

रीडायरेक्ट, ठीक है समस्या found मार्ग के साथ है टेम्पलेट लौटने से यूआरएल /found पर रीडायरेक्ट करने, चाहते हैं। आपके पास एंडपॉइंट पर मूल्यों को पारित करने के कई तरीके हैं: या तो पथ के हिस्से के रूप में, URL पैरामीटर (जीईटी अनुरोधों के लिए), या अनुरोध निकाय (POST अनुरोधों के लिए) में।

दूसरे शब्दों में, अपने कोड के रूप में देखना चाहिए इस प्रकार है:

@app.route('/found/<email>/<listOfObjects>') 
def found(email, listOfObjects): 
    return render_template("found.html", 
     keys=email, obj=listOfObjects) 

वैकल्पिक रूप से:

return redirect(url_for('found', email=x, listOfObjects=y)) 
:

@app.route('/found') 
def found(): 
    return render_template("found.html", 
     keys=request.args.get('email'), obj=request.args.get('listOfObjects')) 

इसके अलावा, आपके पुनर्निर्देशन अनुरोध पैरामीटर, नहीं टेम्प्लेट पैरामीटर प्रदान करना चाहिए

उम्मीद है कि मदद करता है।

+0

धन्यवाद! मैं इसे एक शॉट दूंगा। यह वही है जो मैं – kmomo

+2

की तलाश में था, यदि आप यही चाहते थे तो आप उत्तर देने के लिए स्वतंत्र महसूस करें और/या जवाब स्वीकार करें। –

+1

रीडायरेक्ट का उपयोग (url_for()) क्या ऑब्जेक्ट पैरामीटर के रूप में पारित किया जा सकता है? – tw1742

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