2010-02-15 8 views
7

Estoy usando django-registration para registrar usuarios en mi aplicación. Esa parte funciona bien. La parte que no puedo descifrar es cómo establecer las variables de sesión personalizadas cuando el usuario inicia sesión. Por ejemplo, me gustaría rellenar las variables que contienen los datos del perfil de usuario, así como el resultado de algunas otras funciones. Entonces podría usar esa información en vistas/plantillas posteriores.¿Cómo configuro las variables de sesión al iniciar sesión usando django-registration y auth?

Si alguien puede indicarme un tutorial en línea o publicar un código de muestra, sería genial.

estoy usando Django 1.1 y Python 2.6

Respuesta

3

Si no desea que el almacenamiento persistente de datos de usuario (sólo datos de sesión adicionales) echar un vistazo a:

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

Las sesiones marco probablemente ya esté habilitado si usa django.contrib.auth.

Si quieren almacenamiento permanente de los datos de usuario adicionales (no sólo en una sesión, pero en la base de datos), se almacenará en otro modelo de "perfil":

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

+0

Estoy buscando datos de sesión adicionales en este momento. Ya tengo toda la información en la base de datos, solo necesito descubrir cómo llegar a ella. Supongo que mi verdadera pregunta es ¿cómo puedo configurar esta sesión de datos mientras uso django-registration? ¿Es posible o debo escribir mi propia función para registrar usuarios? – doza

+0

No necesita obtener datos de perfil en la sesión. Al usar django.contrib.auth, puede acceder al usuario actual con request.user. – stefanw

+0

¡Por supuesto! No lo pensé de esa manera. Eso tiene mucho más sentido. Gracias! – doza

1

realizo @stefanw le proporcionó una solución alternativa, pero para responder la pregunta original:

Configurar los datos de sesión al iniciar sesión es difícil porque el lugar más fácil para establecer esos datos está en su función de vista, y la función de vista particular que desea modificar es una parte de la aplicación contrib.django.auth

Así que sus opciones serían las siguientes:

  • Crear una pequeña clase de middleware para establecer sus datos de sesión.
  • Cree una etiqueta de plantilla u otro código que no se pueda integrar en la plantilla de inicio de sesión o en la página subsiguiente que establecerá los datos que desea.
  • Escriba su propia función de vista de inicio de sesión personalizada (en realidad es bastante fácil).

Happy django-ing!

+0

Otra opción sería usar la señal de inicio de sesión: https://docs.djangoproject.com/en/dev/topics/auth/#login-and-logout-signals. Pero como se mencionó anteriormente, en su caso el uso de request.user es una mejor alternativa que usar la sesión. –

+0

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

Cuestiones relacionadas