Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQL:没有传递给模板的值_Python_Sql_Python 3.x_Flask_Jinja2 - Fatal编程技术网

Python SQL:没有传递给模板的值

Python SQL:没有传递给模板的值,python,sql,python-3.x,flask,jinja2,Python,Sql,Python 3.x,Flask,Jinja2,在我正在处理的Flask函数的GET部分,我有一些用Python 3编写的非常简单的代码。我试图传递的数据永远不会显示在我的HTML呈现上 @app.route("/sellselected", methods=["GET", "POST"]) @login_required def sellselected(order_num): if request.method == "POST": #not done, just have a redirect to index

在我正在处理的Flask函数的GET部分,我有一些用Python 3编写的非常简单的代码。我试图传递的数据永远不会显示在我的HTML呈现上

@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呈现中为空。但作为一个测试,我也使用了“fish”,而且它也是空的

Jinja看起来像:

{% block main %}
<list>
    <ul>{{ stock_to_sell }}</ul>
    <ul>{{ order_num }}</ul>
</list>
{% endblock %}
{%block main%}
    {{股票出售}
    {{order_num}}
{%endblock%}

因此,页面正文中有订单号,但待售库存始终为空。

您的问题与jinja无关。您的路由错误,应该是:
@app.route(“/sellselected/”,methods=[“GET”,“POST”])


因为您将order_num传递给sellselected函数,所以您需要在路由中声明它。

您的问题不再与jinja相关。您的路由错误,应该是:
@app.route(“/sellselected/”,methods=[“GET”,“POST”])


因为您将order_num传递给sellselected函数,所以您需要在路由中声明它。

您说您希望传递参数order_num作为正确的传递?因为代码说POST被重定向到索引

所以,你把参数作为GET传递。你需要先得到它

当前订单=request.args.get('order\u 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)

你说你想传递参数order_num作为正确答案?因为代码说POST被重定向到索引

所以,你把参数作为GET传递。你需要先得到它

当前订单=request.args.get('order\u 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)

当心,如果你在一个对象上迭代,那么它的内容将返回为空。这是因为结果是一个生成器,其值只能访问一次

将不起作用,因为gcp\U证书已被迭代:

  gcp_certs = connection.execute(query)
  for cert in gcp_certs:
     print(cert.name)
    
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
  gcp_certs = connection.execute(query)
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
imports copy

gcp_certs = list(connection.execute(query))
sql_select = ''
for cert in copy.copy(gcp_certs):
     print(cert.name)

return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
有效:

  gcp_certs = connection.execute(query)
  for cert in gcp_certs:
     print(cert.name)
    
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
  gcp_certs = connection.execute(query)
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
imports copy

gcp_certs = list(connection.execute(query))
sql_select = ''
for cert in copy.copy(gcp_certs):
     print(cert.name)

return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
一种解决方案:

  gcp_certs = connection.execute(query)
  for cert in gcp_certs:
     print(cert.name)
    
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
  gcp_certs = connection.execute(query)
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
imports copy

gcp_certs = list(connection.execute(query))
sql_select = ''
for cert in copy.copy(gcp_certs):
     print(cert.name)

return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)

当心,如果你在一个对象上迭代,那么它的内容将返回为空。这是因为结果是一个生成器,其值只能访问一次

将不起作用,因为gcp\U证书已被迭代:

  gcp_certs = connection.execute(query)
  for cert in gcp_certs:
     print(cert.name)
    
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
  gcp_certs = connection.execute(query)
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
imports copy

gcp_certs = list(connection.execute(query))
sql_select = ''
for cert in copy.copy(gcp_certs):
     print(cert.name)

return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
有效:

  gcp_certs = connection.execute(query)
  for cert in gcp_certs:
     print(cert.name)
    
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
  gcp_certs = connection.execute(query)
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
imports copy

gcp_certs = list(connection.execute(query))
sql_select = ''
for cert in copy.copy(gcp_certs):
     print(cert.name)

return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
一种解决方案:

  gcp_certs = connection.execute(query)
  for cert in gcp_certs:
     print(cert.name)
    
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
  gcp_certs = connection.execute(query)
  return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)
imports copy

gcp_certs = list(connection.execute(query))
sql_select = ''
for cert in copy.copy(gcp_certs):
     print(cert.name)

return render_template('certifications.html',
                           gcpcerts=gcp_certs,
                           now=datetime.utcnow(),
                           cookie=token)

您正在传递一个列表;这是你的意图吗?如果只传递“fish”,会发生什么情况?是的,jinja更复杂,有for和list,但我简化了,直到我可以让stock-to-sell-to-render“鱼”也不起作用。你正在传递一个列表;这是你的意图吗?如果只传递“fish”,会发生什么情况?是的,jinja更复杂,有for和list,但我简化了,直到我可以让stock-to-sell-to-render“鱼”也不管用,那不管用。我把一切都放在github上。也许我遗漏了一些关键信息。那没用。我把一切都放在github上。也许我遗漏了一些关键信息。