in top-level template code {{ form.csrf_token() }} if hasattr(obj, "jinja_pass_arg"): jinja2.exceptions.UndefinedError: object' has no attribute 'csrf_token'
时间: 2024-01-21 17:19:06 浏览: 169
token-auth:带有 devise_token_auth 的演示应用程序 ng-token-auth
这错误通常是由于在表单中未添加CSRF令牌而导致的。请确保你在表单中添加了`csrf_token()`函数。例如,如果你正在使用Flask框架和WTForms,可以在表单中添加以下代码:
```python
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
class MyForm(FlaskForm):
name = StringField('Name')
submit = SubmitField('Submit')
def generate_csrf_token(self, csrf_context):
return csrf_context['session'].get_csrf_token()
```
然后在你的模板中,你应该使用`form.hidden_tag()`函数来生成隐藏的CSRF令牌,如下所示:
```html
<form method="POST">
{{ form.hidden_tag() }}
{{ form.name.label }} {{ form.name() }}
{{ form.submit() }}
</form>
```
确保你有一个名为`app.secret_key`的密钥被设置,因为Flask需要使用它来生成CSRF令牌。
阅读全文