Создать сессию в Джанго - PullRequest
       9

Создать сессию в Джанго

14 голосов
/ 19 февраля 2010

До сих пор документация для Django была слишком технической. Как мне создать сеанс и сохранить в нем переменные или получить переменные из него? Я новичок в фреймворке Django, поэтому документация слишком техническая. Сессии - мой «последний шаг».

Ответы [ 3 ]

29 голосов
/ 19 февраля 2010

Предполагая, что вам нужны сеансы на основе базы данных (Django также предлагает сеансы на основе файлов и сеансы на основе кэша):

  1. Откройте файл settings.py и найдите MIDDLEWARE_CLASSES. Добавить 'django.contrib.sessions.middleware.SessionMiddleware' в список.
  2. Найдите INSTALLED_APPS в том же файле и добавьте туда 'django.contrib.sessions'.
  3. Запустите manage.py syncdb из командной строки.

После начальной настройки вы можете использовать request.session в своих представлениях для хранения информации между запросами.

Например, здесь будет храниться информация:

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

, и вы можете легко получить его:

print request.session['name']

или

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

Для других вещей, которые вы можете сделать с объектом request.session, см. документацию .

4 голосов
/ 19 февраля 2010

Ответ Людвика - это путь, но если вы хотите более мягкое вступление в мир Джанго, ( (бесплатная) Книга Джанго ) является обязательным для чтения. Глава 15 имеет дело с сессиями.

1 голос
/ 10 октября 2016

MIDDLEWARE_CLASSES должно иметь -

'django.contrib.sessions.middleware.SessionMiddleware'

INSTALLED_APPS должно иметь -

'django.contrib.sessions'

Измените наше представление для входа в систему, чтобы сохранить серверное имя пользователя на куки -

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}

создать представление formView для формы входа в систему, где мы не будем отображать форму, если установлен 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', {})

изменить файл url.py, чтобы изменить URL, чтобы он соответствовал нашему новому представлению -

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'),

создать простое представление выхода из системы, которое удаляет наши cookie.

def logout(request):
   try:
      del request.session['username']
   except:
      pass
   return HttpResponse("<strong>You are logged out.</strong>")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...