WTF_CSRF_ENABLED=False object' has no attribute 'csrf_token'
时间: 2023-07-26 20:03:28 浏览: 127
日本2WTF_89型离心泵级间衬套改进.rar
这个错误通常出现在使用 Flask web 应用程序时,因为 Flask 默认启用 CSRF 保护,需要确保在构建表单时添加 CSRF 令牌。如果你没有手动添加 CSRF 令牌,那么在提交表单时会出现 "WTF_CSRF_ENABLED=False object' has no attribute 'csrf_token'" 的错误。
要解决这个问题,你可以尝试以下几个步骤:
1. 在 Flask 的配置文件中启用 CSRF 保护,将 "WTF_CSRF_ENABLED" 设置为 True。
2. 在表单中添加 CSRF 令牌,可以使用 Flask-WTF 提供的 "csrf_token" 函数来实现。例如:
```
<form method="POST">
{{ form.hidden_tag() }}
<!-- 此处添加其他表单字段 -->
<button type="submit">提交</button>
</form>
```
在这里,"form.hidden_tag()" 会自动生成一个包含 CSRF 令牌的隐藏字段。
3. 如果你使用的是 AJAX 或其他非表单提交方式,可以在请求头中添加 CSRF 令牌。例如:
```
<script>
var csrftoken = '{{ csrf_token() }}';
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': csrftoken
}
});
</script>
```
在这里,"csrf_token()" 函数会生成一个 CSRF 令牌,并将其存储在变量 "csrftoken" 中,然后在请求头中添加 "X-CSRF-TOKEN" 字段,并将其值设置为 "csrftoken"。
希望这些方法可以帮助你解决问题。
阅读全文