【问题标题】:How can I make certain HTML not show up using Flask and Jinja2?如何使用 Flask 和 Jinja2 使某些 HTML 不显示?
【发布时间】:2017-02-19 01:37:22
【问题描述】:

我正在制作一个 Flask 应用程序,它接受用户的单个输入,然后使用该输入来查询 API,并返回结果。

我正在尝试使用相同的模板来获取用户输入和显示结果。

我的返回渲染模板如下所示:

return render_template("query.html", json_data=json_data, info=info)

问题在于,当页面首次加载时,它正在寻找 json_datainfo 变量,但它们还不存在。

我试过这样做:

data = request.args.get("t")

    if data:
        ...
        return render_template("query.html", json_data=json_data, info=info)

    else:

        return render_template("meter_mdm.html", json_data=None, info=None)

然后在我的 Jinja 模板中,我输入:

{% if json_data is not none and info is not none %}   

    ...HTML that uses the json_data and info variables

{% endif %}

但它仍在加载if 语句之间的数据。

知道我需要做什么才能在同一页面上加载结果吗?

【问题讨论】:

  • 在模板中你使用none而不是None,对吗?
  • 没错,但它仍然会加载 HTML 的文本。我最终将我不想显示的所有内容放在另一个 <div> 中,然后通过名为 visible 的请求传递另一个变量。当模板第一次被传递时,它被设置为"none",我将它用作<div>的内联样式,当有数据时它设置为"inline"。我不确定这是否是最好的方法,但它确实有效。

标签: python flask jinja2


【解决方案1】:

尝试简化这一行:

{% if json_data is not none and info is not none %}   

到:

{% if json_data and info %}

这是一个工作演示:

查看:

app.route('/')
def index():
    name = None
    age = None
return render_template('index.html', name=name, age=age)

index.html:

{% if name and age %}
Hello, boy!
{% endif %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 2021-11-27
    • 2021-10-01
    • 2011-03-13
    相关资源
    最近更新 更多