Problema di autenticazione di Django: come posso costringere gli utenti attivi a configurare un profilo prima?

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

Domanda

Mi sono messo in un po 'di sottaceto. Uso spesso Django-registrazione e sembra funzionare per la maggior parte delle situazioni. Tuttavia, voglio richiedere agli utenti di creare il proprio profilo (ad esempio: informazioni demografiche) Prima che possano visitare una qualsiasi delle altre pagine.

Questo è il modo in cui desidero eseguire la configurazione corrente:

  1. Il visitatore compila il modulo di registrazione -(Invia) --->
  2. Verifica e -mail dell'utente -(Link crea utente attivo) --->
  3. -(reindirizzato alla vista del profilo) --->
  4. L'utente compila il modulo del profilo -(Invia)->
  5. L'utente può ora accedere al resto del sito Web

C'è un modo consigliato per farlo?

È stato utile?

Soluzione

Uno dei modi per farlo sarebbe usare il tuo @profile_required decoratore piuttosto che il Django incorporato login_required Su tutte le tue opinioni.

@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)

Quindi su ogni vista si desidera avere un utente con una visita al profilo, solo:

@profile_required
def my_awesome_view(request):
    ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top