如果你不想使用FlaskForm,你仍然可以在HTML模板中手动渲染CSRF token。以下是具体步骤:
- 安装Flask-WTF和WTForms:首先,你需要在你的Python环境中安装Flask-WTF和WTForms。这两个包都是Flask框架的一部分,用于创建表单和验证表单数据。
pip install Flask-WTF WTForms
-
创建CSRFProtect对象:在Flask应用中,创建一个新的CSRFProtect对象,并将其初始化为Flask应用。例如,如果你的应用名为app,你可以这样做:
from flask_wtf.csrf import CSRFProtect csrf = CSRFProtect(app)
-
在HTML模板中渲染CSRF token:在你的HTML模板中,使用Flask的模板引擎来引用你在Python代码中创建的CSRFProtect对象,并生成一个隐藏的输入字段来存储CSRF token。例如,如果你的表单模板名为form.html,你可以这样做:
<form method="post"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"> <!-- 其他表单元素 --> </form>
注意,
csrf_token()
函数会生成一个随机的CSRF token,每次刷新页面时值都会改变。 -
在Python代码中处理CSRF token:在你的Python代码中,处理从HTML模板接收到的CSRF token。例如,如果你的表单处理函数名为process_form,你可以这样做:
@app.route('/process_form', methods=['POST']) def process_form(): if request.method == 'POST': csrf_token = request.form.get('csrf_token') # 在这里验证CSRF token # 如果验证失败,可以使用abort函数来抛出一个异常 # 如果验证成功,可以继续处理表单数据 # ...
注意,你需要确保CSRF token的值与你在HTML模板中生成的值相匹配。
以上就是如何在Flask应用中手动渲染CSRF token的步骤。希望对你有所帮助!