Problème d'authentification Django - Comment puis-je forcer les utilisateurs actifs à configurer d'abord un profil?
-
29-10-2019 - |
Question
Je me suis mis dans un peu de cornichon.J'utilise souvent django-registration, et cela semble fonctionner dans la plupart des situations.Cependant, je souhaite demander aux utilisateurs de créer leur profil (par exemple: informations démographiques) avant de pouvoir visiter l'une des autres pages .
Voici comment je souhaite que la configuration actuelle s'exécute:
- le visiteur remplit le formulaire d'inscription - (soumettre) --->
- vérification de l'adresse e-mail de l'utilisateur - (le lien crée un utilisateur actif) --->
- - (redirigé vers la vue de profil) --->
- l'utilisateur remplit le formulaire de profil - (soumettre) ->
- l'utilisateur peut désormais accéder au reste du site Web
Existe-t-il une méthode recommandée pour ce faire?
La solution
Une des façons de le faire serait d'utiliser votre propre décorateur @profile_required
plutôt que le login_required
intégré de django sur toutes vos vues.
@login_required
def profile_required(func,request,*args,**kwargs):
has_profile = request.user.profile_set.count()
if not has_profile:
return redirect('create_profile')
return func(request,*args,**kwargs)
Ensuite, sur chaque vue, vous souhaitez qu'un utilisateur ayant un profil visite, il suffit:
@profile_required
def my_awesome_view(request):
...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow