为什么我的表单值没有在web2py中提交?

时间:2014-10-24 05:47:25

标签: html web2py

我有一个简单的登录表单。我是使用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>

就像我说我只是一个初学者所以如果请尽可能给予帮助。感谢

2 个答案:

答案 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