我可以在测试期间忽略 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 字段(如果存在)而不依赖于字段名称。
我正在使用 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 字段(如果存在)而不依赖于字段名称。