おそらく、それは自分自身をサインアップしているユーザーを対象として、この場合には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
が返されるようにします。
ありがとうございました。できます!しかし、私は質問にもう一つ追加することを全く忘れてしまった...とにかく私はそのIDを得ることができるのだろうか。 "login = False"なので、 "auth.user.id"は私にロギングされたものを与えます。 "auth.get_or_create_user(form.vars、login = False、get = False)によって作成されたアカウントのIDを知りたい) "ありがとうございました – nuri
' user'変数は新しいユーザレコードを保持していますので、idは 'user.id'です(フラッシュメッセージに含める答えを編集しました)。 – Anthony