0

私はweb2pyを初めて使用し、苦労しています

私は登録とログインのものを作成しようとしています。モデルには、新しいユーザー用のテーブルを作成する次のコードがあります

usersdb = DAL('postgres://postgres:postgres@localhost/'+ request.vars['school'], migrate=True)
auth = Auth(usersdb, hmac_key=Auth.get_or_create_key())
usersdb.define_table(
    'users',
    Field('first_name', length=128, default=''),
    Field('last_name', length=128, default=''),
    Field('email', length=128, default='', unique=True),
    Field('address', length=256, default=''),
    Field('postcode', length=128, default=''),
    Field('city', length=128, default=''),
    Field('password', 'password', length=512, readable=False, label='Password'),
    Field('registration_key', length=512, writable=False, readable=False, default=''),
    Field('reset_password_key', length=512, writable=False, readable=False, default=''),
    Field('registration_id', length=512, writable=False, readable=False, default=''),
    format='%(first_name)s %(last_name)s')

だから今コントローラーで私は次のコードを持っています:

usersdb = DAL('postgres://postgres:postgres@localhost/'+ request.vars['school'], migrate=True)
auth = Auth(usersdb, hmac_key=Auth.get_or_create_key())
auth.settings.registration_requires_approval = True
form = SQLFORM(usersdb.users)
if form.process(session=None, formname='test').accepted:
    response.flash = 'form accepted'
elif form.errors:
    response.flash = 'form has errors'
else:
    response.flash = 'please fill the form'
 # Note: no form instance is passed to the view

 #set sample validator (do not allow empty nor duplicate names)
return dict(form=form,config=config)  

エラーはSQLFORM(usersdb.users)に記録されます。「ユーザー」

これが実際にどのように機能するか(データベースをコントローラーに接続する)はわかりません。私はsmbによって書かれたコードをハッキングしています。そうしないと。

アドバイスや簡単な説明をありがとうございます。

さよなら

4

1 に答える 1

1

userdbコントローラ内またはコントローラ内での定義を繰り返さないでくださいauth。モデルファイルはすべての要求で実行され(条件付きモデルファイルを除く)、コントローラーはモデルで定義されたオブジェクトを含む環境で実行されます。userdbコントローラで、元のオブジェクトを新しいオブジェクトで上書きし、auth再度定義していますが、「users」テーブルを再作成していません。したがって、に「users」テーブルはありませんuserdb

userdbコントローラからとauth定義を削除するだけです。

于 2012-08-22T13:37:08.110 に答える