2010-02-15 7 views
7

Uso la registrazione django per registrare gli utenti nella mia applicazione. Quella parte funziona bene. La parte che non riesco a capire è come impostare variabili di sessione personalizzate quando l'utente esegue il login. Ad esempio, mi piacerebbe popolare le variabili contenenti i dati UserProfile così come l'output di alcune altre funzioni. Quindi sarei in grado di utilizzare tali informazioni nelle viste/modelli successivi.Come impostare le variabili di sessione all'accesso utilizzando django-registration e auth?

Se qualcuno può indicarmi un tutorial online o pubblicare un codice di esempio, sarebbe fantastico.

sto usando Django 1.1 e Python 2.6

risposta

3

Se non si desidera memorizzazione permanente dei dati degli utenti (solo i dati della sessione aggiuntivi) dare un'occhiata a:

http://docs.djangoproject.com/en/dev/topics/http/sessions/

Le sessioni molto probabilmente il framework sarà già abilitato se usi django.contrib.auth.

Se si desidera memorizzazione permanente dei dati degli utenti supplementari (non solo in una sessione, ma nel database), li si memorizzare in un altro modello di "profilo":

http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

+0

Sto solo cercando ulteriori dati di sessione a questo punto. Ho già tutte le informazioni nel database, ho solo bisogno di capire come arrivarci. Credo che la mia vera domanda è come posso impostare i dati di questa sessione mentre uso la registrazione di django? È possibile o dovrei scrivere la mia funzione per registrare gli utenti? – doza

+0

Non è necessario ottenere i dati del profilo nella sessione. Quando si utilizza django.contrib.auth è possibile accedere all'utente corrente con request.user. – stefanw

+0

Certo! Non ci ho pensato in questo modo. Questo ha molto più senso. Grazie! – doza

1

mi rendo conto @stefanw fornito una soluzione alternativa, ma per rispondere alla domanda iniziale:

L'impostazione dei dati di sessione all'accesso è difficile perché la posizione più semplice per impostare tali dati è nella funzione di visualizzazione e la funzione di visualizzazione particolare che si desidera modificare è una parte dell'app contrib.django.auth.

Quindi le opzioni sarebbero i seguenti:

  • Creare una piccola classe middleware per impostare i dati di sessione.
  • Creare un tag modello o altro bit di codice che può essere integrato nel modello di accesso o nella pagina successiva che imposterà i dati desiderati.
  • Scrivi la tua funzione di visualizzazione di accesso personalizzata (in realtà è abbastanza semplice, in realtà).

Happy django-ing!

+0

Un'altra opzione potrebbe essere quella di utilizzare il segnale di accesso: https://docs.djangoproject.com/en/dev/topics/auth/#login-and-logout-signals. Ma come detto sopra, nel tuo caso l'utilizzo di request.user è un'alternativa migliore rispetto all'utilizzo della sessione. –

+0

Link corretto: https://docs.djangoproject.com/en/1.11/ref/contrib/auth/#module-django.contrib.auth.signals – cgl

Problemi correlati