我可以在测试期间忽略 Jinja2 的 "UndefinedError" 吗?

Can I ignore Jinja2's "UndefinedError" during tests?

我正在使用 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 token字段。

我可以让 Jinja 忽略这个错误或者避免这个问题吗?

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

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