我有一个简单的登录表单。我是使用web2py的初学者,所以我无法弄清楚为什么我的表单值没有被提交。
这是我的控制器功能
def signup():
form = SQLFORM(db.Membership).process()
form.add_button('Back', URL('index.html'))
if form.process().accepted:
session.flash = 'form accepted'
redirect(URL('index.html'))
elif form.errors:
response.flash = 'form has errors'
else:
response.flash = 'please fill the form'
return locals()
这是我的数据库
db.define_table('Membership',
Field('userID', 'id'),
Field('username', 'string',unique=True),
Field('membershipType','string',default = "Member", label = T('Membership Type')),
Field('name' , 'string',default='Admin'),
Field('password', 'password'),
Field('email' , 'string',default='Admin@admin.com'),
Field('cNum', 'integer',, label = T('Contact Number'))
)
这是html
<section>
<h2>Fill in the details to register</h2>
{{=form}}
</section>
就像我说我只是一个初学者所以如果请尽可能给予帮助。感谢
答案 0 :(得分:1)
您正在拨打form.process()
两次。第一个调用实际上将执行处理并插入记录,第二个调用将简单地重置CSRF令牌。因此,在第二种情况下,.accepted
属性将为False
,您将无法获得重定向和成功消息。将第一行更改为:
form = SQLFORM(db.membership)
答案 1 :(得分:0)
form = SQLFORM(db.Membership).process()
无需将其更改为form = SQLFORM(db.Membership)
def signup():
form = SQLFORM(db.Membership)
form.add_button('Back', URL('index.html'))
if form.process().accepted:
session.flash = 'form accepted'
redirect(URL('index.html'))
elif form.errors:
response.flash = 'form has errors'
else:
response.flash = 'please fill the form'
return locals()
顺便说一句,我问你为什么要创建一个新的会员资格&#39;桌子? Web2py Auth已经为您处理身份验证和授权。在Web2py的书中查看Access Control。