python - 我可以在测试期间忽略 Jinja2 的“UndefinedError”吗?
问题描述
我正在使用 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 忽略这个错误或避免这个问题吗?
解决方案
经过更多阅读,我相信我找到了解决方案。
如果 CSRF 字段存在,替换form.csrf_token
为form.hidden_tag
将呈现 CSRF 字段,而不依赖于字段名称。
推荐阅读
- c# - 从多个 Excel 工作簿中选择特定行,每个工作簿都包含多个工作表。然后将过滤后的行写入 CSV 或 .xlsx
- python - 如何使用 raspberypi 3b+ 将文件上传到 Firebase
- vb.net - 使用 Newtonsoft.Json.JsonConvert.DeserializeObject VISUAL BASIC 将 json 字符串反序列化为 Visual Basic 对象
- c# - 使用引用项目解决 Nuget 依赖项
- java - 我们可以在以下场景中使用 java 流吗?
- spring-boot - spring-boot-security 2.2.5 - java.lang.NoClassDefFoundError:org/bouncycastle/crypto/params/Argon2Parameters
- haskell - Haskell中索引时间的重复列表元素
- excel - 关于vba运行时错误1004的问题
- android - 无法从 cmake.dir 获取版本
- javascript - 在 POST 请求中动态创建文件以供下载