Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用挂架验证和验证表单装饰器_Python_Pylons_Formencode_Htmlfill - Fatal编程技术网

Python 使用挂架验证和验证表单装饰器

Python 使用挂架验证和验证表单装饰器,python,pylons,formencode,htmlfill,Python,Pylons,Formencode,Htmlfill,validate和authenticate_表单装饰器似乎不能很好地结合在一起。这是我的模板: <html> <title>Test</title> <body> ${h.secure_form('/meow/do_post')} <input type="text" name="dummy"> <form:error name="dummy"><br> <input type="submit" name=

validate和authenticate_表单装饰器似乎不能很好地结合在一起。这是我的模板:

<html>
<title>Test</title>
<body>
${h.secure_form('/meow/do_post')}
<input type="text" name="dummy">
<form:error name="dummy"><br>
<input type="submit" name="doit" value="Do It">
${h.end_form()}
</body>
</html>
如果验证失败,@validate decorator将使用htmlfill.render重新呈现表单,但这会去除身份验证令牌,因此在下次提交表单时会显示403 CSRF检测到的错误

由于@authenticate\u form从request.POST中删除了身份验证令牌,因此身份验证令牌似乎被剥离

如果改用此选项:

@validate(schema=MeowForm(), form='index', force_defaults=False)
它很好用。如果force_defaults设置为False,是否会发生任何不好的情况?当默认值“是表单提交的结果”时,htmlfill的文档似乎建议将其设置为True

您需要更改装饰程序的顺序,验证装饰程序必须是最后一个

@validate(schema=MeowForm(), form='index', force_defaults=False)
@validate(schema=MeowForm(), form='index')
@authenticate_form
def do_post(self):