Rejestracja django umożliwia napisanie custom backend w celu obsługi indywidualnych potrzeb aktywacyjnych.
Użytkownik powinien utworzyć własny backend, wdrażając samodzielnie: register
i activate
.
Oto przykład tego, jak można realizować register
funkcję:
def register(self, request, **kwargs):
username, email, password = kwargs['username'], kwargs['email'], kwargs['password1']
if Site._meta.installed:
site = Site.objects.get_current()
else:
site = RequestSite(request)
new_user = RegistrationProfile.objects.create_inactive_user(username, email,
password, site,
send_email=False)
# send an email to the admins with user information
send_new_user_notification(new_user) # you would write this function
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
return new_user
Kluczową kwestią jest, aby upewnić send_email
jest ustawiona na false; to uniemożliwi użytkownikowi uzyskanie linku aktywacyjnego. Następnie możesz zdecydować, czy wiadomość e-mail wysłana do administratorów ma link aktywacyjny, czy jesteś zadowolony z ich dostępności do administratora i po prostu zaznaczając pole "Aktywne".
Jeśli używasz AuthenticationForm
z django.contrib.auth
następnie zostanie ona automatycznie odrzucać użytkowników, których is_active
jest False, ale jeśli nie używasz następnie upewnij się, że aby uruchomić następujący czek na każde żądanie, gdzie wymagana jest aktywnym użytkownikiem:
def restricted_view(request):
if request.user and request.user.is_active:
#continue with the code
Możesz również napisać własny dekorator (patrz: @login_required
dla wskazówek). Zauważ, że nie sprawdzanie dla sprawdzanie dla .