2017-04-11 57 views
1

在我Flask函數的GET部分中,我正在研究一些非常簡單的代碼,用Python 3編寫。我嘗試傳入的數據從不顯示在我的HTML呈現。Python Flask Jinja SQL:沒有將值傳遞給模板

@app.route("/sellselected", methods=["GET", "POST"]) 
@login_required 
def sellselected(order_num): 
    if request.method == "POST": 
     #not done, just have a redirect to index 
    else: 
     stock_to_sell = db.execute("SELECT * FROM purchases WHERE order_num = :order_num", order_num=order_num) 
     #stock_to_sell = ['fish'] 

    return render_template("sellselected.html", stock_to_sell=stock_to_sell, order_num=order_num) 

SQL語句似乎沒有任何內容,它只是在HTML呈現中空白。但作爲一項測試,我也使用'魚',它也不是空的。

神社的樣子:

{% block main %} 
<list> 
    <ul>{{ stock_to_sell }}</ul> 
    <ul>{{ order_num }}</ul> 
</list> 
{% endblock %} 

所以頁面的主體有訂單號,但stock_to_sell總是空空的。

+0

你傳遞一個列表;你的意圖是?如果你只通過「魚」會發生什麼? – bernie

+0

是的,忍者的for和列表更復雜,但我簡化了,直到我可以通過stock_to_sell渲染。 '魚'也不起作用。 –

回答

0

你的問題已經和jinja無關了。您的路線錯誤,應該是:@app.route("/sellselected/<order_num>", methods=["GET", "POST"])

因爲您將order_num傳遞給了sellselected函數,所以您需要在路由上聲明它。

+0

這沒有奏效。我把所有東西都放在github上。也許我會留下一些關鍵信息。 https://github.com/jamesdylangoldstein/finance –

0

你說你喜歡傳遞參數order_num作爲GET吧?因爲代碼說POST是重定向到索引。

所以,你傳遞參數爲GET。你需要得到它的第一

current_order = request.args.get( 'order_num')

你的代碼應該是:

@app.route("/sellselected", methods=["GET", "POST"]) 
@login_required 
def sellselected(order_num): 
    if request.method == "POST": 
     # not done, just have a redirect to index 
    else: 
     order_num = request.args.get('order_num') 
     stock_to_sell = db.execute("SELECT * FROM purchases WHERE order_num = :order_num", order_num=order_num) 

return render_template("sellselected.html", stock_to_sell=stock_to_sell, order_num=order_num)