小编Yar*_*lav的帖子

如何修复 Flask-WTForms 中的“CSRF 令牌丢失”

我正在创建一个小型企业门户网站。将会有一个计算机数据库,其中包含有关公司中所有计算机的信息。我正在创建一个 WTForm 用于编辑计算机的属性。我有一个页面,其中包含包含计算机属性的表格。每行都有特殊的按钮。当用户按下其中一个时,我想显示一个带有从数据库获取默认值的表单的页面。当我在视图函数中编辑默认值时,出现错误:

\n\n
The CSRF token is missing.\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的查看功能:

\n\n
def edit_computer(computer_id):\n    if admin_can() or sysadmin_can():\n        computer = models.Computer.query.filter_by(id=computer_id).one()\n        user = models.User.query.filter_by(id=computer.user_id).one()\n        email = user.email\n\n        form = forms.EditComputerForm()\n        form.email.default = user.email\n        form.type_.default=computer.type_\n        form.model.default = computer.model\n        form.cpu.default = computer.cpu\n        form.ram.default = computer.ram\n        form.rom.default = computer.rom\n        form.os.default = computer.os\n        form.supplements.default = computer.supplements\n        form.process()\n\n        if form.validate_on_submit():\n            ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我不设置默认值时(删除此 \xe2\x86\x93),代码工作正常

\n\n
form.email.default = user.email\nform.type_.default=computer.type_\nform.model.default = computer.model\nform.cpu.default = computer.cpu\nform.ram.default = computer.ram\nform.rom.default = computer.rom\nform.os.default = computer.os\nform.supplements.default = computer.supplements\nform.process()\n
Run Code Online (Sandbox Code Playgroud)\n\n

形式:

\n\n
class EditComputerForm(FlaskForm): …
Run Code Online (Sandbox Code Playgroud)

python flask python-3.x wtforms flask-wtforms

3
推荐指数
1
解决办法
722
查看次数

标签 统计

flask ×1

flask-wtforms ×1

python ×1

python-3.x ×1

wtforms ×1