【问题标题】:if statement in html (with jinja2) - where should I edit to make it work?html 中的 if 语句(使用 jinja2) - 我应该在哪里编辑以使其工作?
【发布时间】:2018-11-12 05:55:23
【问题描述】:

更新:session['sid'] 中有空格,这就是为什么这不起作用!

我正在使用 python、flask、jinja2、html。 这是我的 html 代码的一部分。

    <h1>{{session['sid']}}</h1>                   <!--shows 'admin'-->
    <ul>
        {% if session['sid'] != 'admin' %}
        <li> <a href="/sendmail">SEND MAIL</a> </li>
        <li> <a href="">MAIL BOX</a> </li>
        {% endif %}

session 是从 python 发送到这个 html 的字典类型数据,我仔细检查了 session['sid']'admin'。但是那些超链接仍然出现,所以看起来if 语句不起作用。在代码的某处,还有session['sid']!='admin' 也不起作用。我在 html 中搜索了 ifstatement 示例,但我仍然不明白我在哪里犯了错误。谁能让我知道我在这里缺少什么?

我尝试在admin 周围排除' 或改用{% if equal session['sid'] 'admin'%}

【问题讨论】:

  • 你遇到了什么错误?
  • 为什么不直接调试 HTML?插入{{ session['sid'] }}将显示其值,然后您可以确定它是否等于'admin'
  • @Attack68 编辑了我的代码。
  • @HarshaB 没有错误。只是 if 语句不起作用。
  • 您能否验证type(session['sid'])str,以防万一它不是另一种仅字符串化为admin 的类型?

标签: python html flask jinja2


【解决方案1】:

我用jinja-cli 和这个数据文件(命名为data.json)测试了你的模板(命名为template.j2):

{
    "session": {
        "sid": "admin"
    }
}

命令行:

# pip install jinja-cli
# jinja -d data.json template.j2

结果正确:

<ul>

</ul>

所以我认为模板很好;您可能想在 python 代码中转储session 以查看flask 是否真的正确设置了它; flask.session 是代理;在引擎盖下,它是一个签名的 cookie (doc);所以您可能还应该检查您的 cookie 设置;

【讨论】:

  • 谢谢!我添加了一个标题来显示上面session['sid'] 中的内容,这越来越令人沮丧。至少这似乎意味着烧瓶正确设置它。
  • @PuffedRiceCrackers 我建议在这种情况下上传整个项目,以便我们查看其配置是否有问题;
  • 事实上,session['sid'] 有空格,类似于 admin
猜你喜欢
  • 2019-09-29
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
  • 2017-03-26
  • 2014-06-01
  • 2010-11-30
相关资源
最近更新 更多