Problème d'authentification Django - Comment puis-je forcer les utilisateurs actifs à configurer d'abord un profil?

StackOverflow https://stackoverflow.com/questions/6391270

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:

  1. le visiteur remplit le formulaire d'inscription - (soumettre) --->
  2. vérification de l'adresse e-mail de l'utilisateur - (le lien crée un utilisateur actif) --->
  3. - (redirigé vers la vue de profil) --->
  4. l'utilisateur remplit le formulaire de profil - (soumettre) ->
  5. l'utilisateur peut désormais accéder au reste du site Web

Existe-t-il une méthode recommandée pour ce faire?

Était-ce utile?

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
scroll top