【问题标题】:Can I ignore Jinja2's "UndefinedError" during tests?我可以在测试期间忽略 Jinja2 的“UndefinedError”吗?
【发布时间】:2020-02-10 08:35:45
【问题描述】:

我将 Flask 与 Flask-WTF 一起使用。我决定在测试中禁用 CSRF 保护,因为用它进行测试有点尴尬,而且我不想测试 Flask/Flask-WTF。然而,这又引发了另一个问题:

jinja2.exceptions.UndefinedError: 'trip_planner.auth.forms.LoginForm object' has no attribute 'csrf_token'

违规模板如下:

{% extends "base.html" %}

{% block main %}
    <form method="POST">
        {{ form.csrf_token }}
        <div>
            {{ form.username.label }}{{ form.username }}
        </div>
        <div>
            {{ form.password.label }}{{ form.password }}
        </div>
        <div>
            <button type="submit">Login</button>
        </div>
    </form>
{% endblock %}

我的理解如下:如果CSRF被完全禁用,WTForms不会费心在表单中注入CSRF令牌字段。

我可以让 Jinja 忽略此错误或以其他方式避免此问题吗?

【问题讨论】:

    标签: python flask jinja2 flask-wtforms


    【解决方案1】:

    经过更多阅读,我相信我找到了解决方案。

    form.csrf_token 替换为 form.hidden_tag 将呈现 CSRF 字段(如果存在),而不依赖于字段名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-06
      • 2016-08-23
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多