カスタム バックエンド (サブクラス化された django-registration の SimpleBackend) を使用しています。register()
登録中に何らかの処理を行う必要があるため (たとえば、外部サービスとの通信) 、メソッドをオーバーライドします。
登録に失敗した場合、登録フォームにエラーが発生したことを伝えることはできますか?
これはフォーム検証レベルで実装する必要がありますか?
別の例として、ユーザーの作成時にデータベース エラーが発生する可能性があります。登録が正常に失敗するにはどうすればよいですか?
編集:これがSimpleBackendの私のサブクラスです:
class MySimpleBackend(SimpleBackend):
def register(self, request, **kwargs):
username, email, password = kwargs['username'], kwargs['email'], kwargs['password1']
#
# Make a call to some external API, for example
retval = api_call_to_somewhere()
if retval is False:
# Request failed: display some error message on registration form
return something
# OR
raise some_other
# Rest of code is the same as django-registration
User.objects.create_user(username, email, password)
# authenticate() always has to be called before login(), and
# will return the user we just created.
new_user = authenticate(username=username, password=password)
login(request, new_user)
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
return new_user