2014-10-24 4 views
0

У меня простая форма для входа в систему. Я новичок в использовании 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='[email protected]'), 
    Field('cNum', 'integer',, label = T('Contact Number')) 
    ) 

и это HTML

<section> 
    <h2>Fill in the details to register</h2> 


    {{=form}} 



</section> 

Как я сказал, я только начинающий так что если дать пожалуйста любая помощь возможна. Thanks

ответ

1

Вы звоните form.process() дважды. Первый вызов будет фактически выполнять обработку и вставить запись, а второй - просто сбросить токен CSRF. В результате атрибут .accepted будет во втором случае False, и вы не получите сообщение о перенаправлении и успехе. Изменение первой линии:

form = SQLFORM(db.membership) 
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() 

Кстати, мой я спросить, почему вы создаете новую таблицу «ЧЛЕНСТВО»? Web2py Auth уже имеет дело с аутентификацией и авторизацией для вас. Проверьте Access Control на книге Web2py.

Смежные вопросы