2016-04-07 8 views
0

現在、私はweb2pyを使ってWebアプリケーションを作っています。web2pyログイン時にアカウントを作成

私がしたいのは、ユーザーが既にログインしている間にアカウントを作成することです。

「auth()」に「http://.../[app]/default/user/register」があることがわかりました。

ユーザーがログインしていない場合、この「登録」は「サインアップ」として機能します。 しかし、ユーザーが既にログインしている場合、「登録」は「アカウント情報の変更」として機能します。

すでにログインしていても「登録」することができますか?

おかげ

答えて

0

おそらく、それは自分自身をサインアップしているユーザーを対象として、この場合にはauth.register()を使用したくありません。代わりに、あなたは(コントローラファイルで)このような何かを試すことができます。

def add_user(): 
    form = SQLFORM(db.auth_user, 
        fields=['first_name', 'last_name', 'email', 'password']) 
    if form.validate(): 
     user = auth.get_or_create_user(form.vars, login=False, get=False) 
     response.flash = 'User %s created' % user.id if user else 'User already exists' 
    return dict(form=form) 

.process()とは異なり、デフォルトでは、.validate()メソッドは、データベース内の任意のデータを挿入しません。この場合、代わりにauth.get_or_create_user()経由で挿入します。 login=Falseを設定して、ログインが新しいアカウントに切り替わらないようにし、get=Falseを設定して、ユーザーが既に存在する場合(特別なエラーメッセージを表示させる)、Noneが返されるようにします。

+0

ありがとうございました。できます!しかし、私は質問にもう一つ追加することを全く忘れてしまった...とにかく私はそのIDを得ることができるのだろうか。 "login = False"なので、 "auth.user.id"は私にロギングされたものを与えます。 "auth.get_or_create_user(form.vars、login = False、get = False)によって作成されたアカウントのIDを知りたい) "ありがとうございました – nuri

+0

' user'変数は新しいユーザレコードを保持していますので、idは 'user.id'です(フラッシュメッセージに含める答えを編集しました)。 – Anthony

関連する問題