我正在使用自定義後端(subclassed django註冊的SimpleBackend)。 我重寫了register()
方法,因爲我需要在註冊期間進行一些處理(例如,與外部服務進行通信)。Django註冊與自定義後端:如何返回錯誤信息註冊()
如果註冊失敗,我可以告訴註冊表單發生錯誤嗎?
這是否需要在表單驗證級別執行?
作爲另一個例子,在創建用戶時可能會發生數據庫錯誤。註冊如何優雅地失敗?
編輯:這是我的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
你可以分享一些代碼,以便我們可以幫幫忙好? – karthikr
@karthikr我已經添加了一些代碼,以更好地顯示我在找什麼。 – jpimentel
您需要提出一個驗證錯誤異常來實現此目的 – karthikr