【问题标题】:Flask and Retrieving data from HTML [duplicate]烧瓶和从 HTML 中检索数据 [重复]
【发布时间】:2021-11-04 20:32:40
【问题描述】:

我对 Flask/Python/HTML 比较陌生,所以请原谅我的语言。

基本上,我正在尝试使用在我的 HTML 页面中输入的 request.form.get 检索“名称”字段。 name 字段是使用 jinja 中的 for 循环生成的。当我点击复选框并单击提交时,我希望 request.form.get 检索该特定复选框数据中的“名称”字段。但是,当我测试数据时,我收到一个 404 错误,表示 request.form.get 值是 NONE 。我不确定我哪里出错了。我怀疑这可能是我插入的 request.form.get 的名称。

在我的烧瓶一侧:

@app.route("/recipedata", methods=["GET","POST"])
def recipedata():
    if request.method == 'POST':
        food = request.form.get("{{value.id}}")

在 HTML 方面:


{% for value in foodinfo.results %}

<form action="/recipedata" method = "POST">
    <input type="checkbox" name="{{value.id}}" value={{value.id}}>
    <input type=text placeholder="{{value.id}}">
    <input type="submit"> Go to Recipe info 
 </form>
{% endfor %}

表单标签中带有文本类型的第二行用于测试我的 value.id 是否在 Jinja 中正确打印,确实如此。此外,为澄清起见,foodinfo 作为具有嵌套字典键/值的 .json() 对象传递。我相信,Value.id 允许我在键 'id' 处访问该字典的值。

谢谢!

【问题讨论】:

  • request.form.get("{{value.id}}") 而不是{{value.id}} 给出value.id 的值。基本上你在 html 中看到的 name=??request.formdict 您也可以打印它以查看可用的 print(request.form
  • 我如何从我的 HTML 模板中实际检索值 id? request.form.get("{{value.id}}") 我实际上是在获得价值本身还是我真的看到了 {{value.id}}?

标签: python html flask jinja2


【解决方案1】:

我不认为您的 recipedata() 函数定义根据 python 语法是有效的。您需要在 python 中缩进代码以保留范围信息。你可以看到更多here

尝试以下函数定义。

def recipedata():
  if request.method == 'POST':
    food = request.form.get("{{value.id}}")

我不确定 HTML 部分是否会造成任何问题。

【讨论】:

  • 我如何从我的 HTML 模板中实际检索值 id? request.form.get("{{value.id}}") 我实际上是在获得价值本身还是我真的看到了 {{value.id}}?
  • @keinn12 request.form 是一个 python 字典,通过使用 dict.get("key"),我们可以从字典中获取所需的值。这里,{{value.id}} 是关键。因此,当您执行food = request.form.get("{{value.id}}") 时,该值存储在 food 变量中,您现在可以将其用作普通的 python var。
猜你喜欢
  • 2021-06-15
  • 2020-02-29
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 2020-07-10
  • 2021-12-14
相关资源
最近更新 更多