2012-08-03 27 views
1

我有一個簡單的Flask應用程序,它包含幾個基本視圖。其中一種觀點稱爲結果。它所做的是使用GET獲取URL參數,然後使用這些參數完成一堆操作,最後使用render_template()呈現模板並將計算值傳遞給它。根據參數將視圖路由到另一個URL

渲染,結果URL看起來是這樣的:

http://127.0.0.1:5000/result?s=abcd&t=wxyz 

我想要做的是,而不是結果視圖下呈現模板,我想重定向到一個新的視圖(讓我們將其稱爲最終),將計算的值與重定向一起傳遞,並從那裏呈現模板。爲什麼要這樣做?因爲我想最終的URL看起來像這個:

http://127.0.0.1:5000/final/abcd 

我很抱歉,如果標題是有點含糊。

回答

2

說,「ABCD」在最後的URL可以是實際的結果,最簡單的解決方案:

@app.route("/result") 
def calculate_result(): 
    s, t = request.args.get("s"), request.args.get("t") 
    # Calculate result with s and t 
    return redirect(url_for(".display_results", result=result)) 

@app.route("/final/<result>") 
def display_results(result): 
    return render_template("results.html", result=result) 

如果不能,那麼你可以使用session代替:

@app.route("/result") 
def calculate_result(): 
    s, t = request.args.get("s"), request.args.get("t") 
    # Calculate result with s and t 
    session["result"] = result 
    return redirect(url_for(".display_results", result=result)) 

@app.route("/final/abcd") 
def display_results(): 
    result = session.get("result") 
    return render_template("results.html", result=result) 
+0

我嘗試使用第二種方法,無濟於事。該URL已成功顯示,但結果(calculate_result()存儲3個變量,其中兩個是字典)不會在會話中結轉。此外,模板已呈現但未呈現。該頁面不包含CSS,並且所有傳遞的變量都是無類型的。 – 2012-08-04 13:06:42

+0

@ Cyph0n - 你有沒有在你的代碼中設置['SECRET_KEY'](http://flask.pocoo.org/docs/api/#flask.Flask.secret_key)?如果你沒有一套會議,會議將無法正常工作。 – 2012-08-04 13:45:09

相關問題