2017-04-11 59 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)