registrazione django consente di scrivere un custom backend per gestire le esigenze di attivazione personalizzate.
Quindi quello che dovresti fare è creare il tuo back-end, implementando lo register
e lo activate
da solo.
Ecco un esempio di come è possibile implementare la funzione register
:
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
Il punto chiave è quello di assicurarsi send_email
è impostato su false; ciò impedirà all'utente di ottenere un link di attivazione. Quindi puoi decidere se l'e-mail inviata agli amministratori ha un link di attivazione o se ti accontenti di andare all'amministratore e basta controllare la casella "Attiva".
Se si utilizza AuthenticationForm
da django.contrib.auth
allora rifiuterà automaticamente gli utenti il cui is_active
è falso, ma se non si sta usando che quindi assicurarsi di eseguire il seguente controllo per qualsiasi richiesta in cui è richiesto un utente attivo:
def restricted_view(request):
if request.user and request.user.is_active:
#continue with the code
È inoltre possibile scrivere il proprio decoratore (consultare @login_required
per i puntatori). Si noti che @login_required
fa non verificare per is_active
.
fonte
2010-12-10 18:22:56