Flask unit test throwing Error: has no attribute 'csrf_token' in Jinja2 template
Flask unit test throwing Error: has no attribute 'csrf_token' in Jinja2 template
在我的单元测试中,我已经使用
禁用了 CSRF
WTF_CSRF_ENABLED = False
失败的示例测试用例
def test_get_tags(self):
tag_name = 'tag_1'
r = self.client.get(url_for('tag.tags'))
self.assertIn(tag_name, r.get_data(as_text=True))
但是在我的模板中我调用了 csrf 令牌。
{% for form in tag_forms%}
{{form.csrf_token}}
{{form.tag_name}}
{{form.update}}
{{form.delete}}
{% endfor %}
这会导致以下错误
jinja2.exceptions.UndefinedError: 'app.tag.forms.UpdateTagForm object' has no attribute 'csrf_token'
我猜这个错误是因为我禁用了 CSRF 令牌。如何解决?
在您的 jinja 模板中,首先检查是否设置了该值,然后检查是否包含它。
{% if 'csrf_token' in form %}
{{form.csrf_token}}
{% endif %}
在我的单元测试中,我已经使用
禁用了 CSRFWTF_CSRF_ENABLED = False
失败的示例测试用例
def test_get_tags(self):
tag_name = 'tag_1'
r = self.client.get(url_for('tag.tags'))
self.assertIn(tag_name, r.get_data(as_text=True))
但是在我的模板中我调用了 csrf 令牌。
{% for form in tag_forms%}
{{form.csrf_token}}
{{form.tag_name}}
{{form.update}}
{{form.delete}}
{% endfor %}
这会导致以下错误
jinja2.exceptions.UndefinedError: 'app.tag.forms.UpdateTagForm object' has no attribute 'csrf_token'
我猜这个错误是因为我禁用了 CSRF 令牌。如何解决?
在您的 jinja 模板中,首先检查是否设置了该值,然后检查是否包含它。
{% if 'csrf_token' in form %}
{{form.csrf_token}}
{% endif %}