2010-02-19 9 views
11

Hasta ahora, la documentación para Django ha sido demasiado técnica. ¿Cómo creo una sesión y almaceno variables en ella o obtengo variables de ella? Soy nuevo en el marco de Django, por lo tanto, la documentación es demasiado técnica. Las sesiones son mi "último paso".Crear una sesión en Django

Respuesta

23

Suponiendo que deseas sesiones basadas en bases de datos (Django también ofrece sesiones basado en archivos, y las sesiones en función de caché):

  1. settings.py abierto y encontrar MIDDLEWARE_CLASSES. Agregue 'django.contrib.sessions.middleware.SessionMiddleware' a la lista.
  2. Encuentra INSTALLED_APPS en el mismo archivo y agrega 'django.contrib.sessions' allí.
  3. Ejecute manage.py syncdb desde la línea de comandos.

Después de la configuración inicial, puede usar request.session en sus vistas para almacenar información entre las solicitudes.

Por ejemplo, esto va a almacenar la información:

request.session['name'] = 'Ludwik' 

y se puede recuperar como fácilemte:

print request.session['name'] 

o

if request.session['name'] == 'Ludwik': 
    print 'you are awesome!' 

Para otras cosas que puede hacer con el request.session objeto ver the documentation.

4

La respuesta de Ludwik es el camino a seguir, pero si quieres una introducción más suave al mundo de Django, (the (free) Django Book) es una lectura obligada. Chapter 15 se ocupa de las sesiones.

0

MIDDLEWARE_CLASSES deben tener -

'django.contrib.sessions.middleware.SessionMiddleware' 

INSTALLED_APPS debe tener -

'django.contrib.sessions' 

cambiar nuestra visión entrada para salvar a nuestro lado del servidor de galletas nombre de usuario -

def login(request): 
    username = 'not logged in' 

    if request.method == 'POST': 
    MyLoginForm = LoginForm(request.POST) 

    if MyLoginForm.is_valid(): 
     username = MyLoginForm.cleaned_data['username'] 
     request.session['username'] = username 
    else: 
     MyLoginForm = LoginForm() 

    return render(request, 'loggedin.html', {"username" : username} 

CREATE VIEW formview para el formulario de inicio de sesión, donde no mostraremos el formulario si se establece la cookie -

def formView(request): 
    if request.session.has_key('username'): 
     username = request.session['username'] 
     return render(request, 'loggedin.html', {"username" : username}) 
    else: 
     return render(request, 'login.html', {}) 

cambio el archivo url.py cambiar la URL por lo que se empareja con nuestra nueva visión -

from django.conf.urls import patterns, url 
from django.views.generic import TemplateView 

urlpatterns = patterns('myapp.views', 
    url(r'^connection/','formView', name = 'loginform'), 
    url(r'^login/', 'login', name = 'login')) 
    url(r'^logout/', 'logout', name = 'logout'), 

crear una visión de cierre de sesión simple que borra nuestra cookie.

def logout(request): 
    try: 
     del request.session['username'] 
    except: 
     pass 
    return HttpResponse("<strong>You are logged out.</strong>") 
Cuestiones relacionadas