Python HTML格式的Web2py SQLFORM

Python HTML格式的Web2py SQLFORM,python,web2py,Python,Web2py,我正在关注Web2py关于HTML中SQLFORM的书。 然而,我似乎无法理解。我已将隐藏字段name=“\u formname”及其值设置为test。该表格似乎未经处理。这是我的密码: test.html: <form action="" method="post"> <ul> <li>Your name is <input name="name" /></li> </ul> <

我正在关注Web2py关于HTML中SQLFORM的书。

然而,我似乎无法理解。我已将隐藏字段
name=“\u formname”
及其值设置为
test
。该表格似乎未经处理。这是我的密码:

test.html:

<form action="" method="post">
    <ul>
       <li>Your name is <input name="name" /></li>
    </ul>
    <input type="submit" />
    <input type="hidden" name="_formname" value="test" />
</form>
模型/db.py:

db.define_table('person',
Field('name', requires=IS_NOT_EMPTY()))

您需要将HTML代码放在一个名为test.HTML的视图中

以及守则:

 session.flash = T('Succeeded.')
将其更改为:

response.flash='Succeeded.'
T()查找要翻译的已定义字符串,我没有看到名为successed的字符串。在语言文件上。

仅在视图文件上尝试:

{{=form}}

通过这种方式,web2py会自动为您生成表单,不需要手动编码表单

请注意,本书的示例包括以下内容:

form.process(session=None, formname='test')
在上面,设置
session=None
将禁用隐藏的“\u formkey”字段,该字段用于防止CSRF攻击和双重表单提交。但是,在您的代码中,您没有设置
session=None
,这意味着在提交表单时处理表单时,它希望收到隐藏的“\u formkey”值。如果找不到该值,处理将失败,尽管它不会生成任何
表单。错误
,因此不会触发错误条件。要准确复制书本示例,必须设置
session=None
。否则,如果要保留CSRF保护(这是一个好主意),可以将以下内容添加到表单HTML中:

<input name="_formkey" type="hidden" value="{{=formkey}}" />

test.html文件(视图)上的代码是什么注意,即使语言文件中没有“succeed.”条目,也可以设置
session.flash=T('succeed')
。语言文件中不存在的任何字符串都将自动添加,然后您可以进入并添加翻译(如果您不添加翻译,字符串将只是显示为未翻译的,不会出现错误)。是的,我将HTML代码放在了“视图”文件夹中的单独文件中。我只是没有在这里说明。我收到一个错误,说SQLFORM中没有属性formkey。
formkey
属性只有在调用
.process()
方法之后才会存在,并且只有在您没有设置
会话=None
的情况下才会存在。
<input name="_formkey" type="hidden" value="{{=formkey}}" />
def test():
    ...
    return dict(formkey=form.formkey)