Подтвердить что ты не робот

Создание сеанса в Django

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

4b9b3361

Ответ 1

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

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

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

Например, это сохранит информацию:

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

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

print request.session['name']

или

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

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

Ответ 2

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

Ответ 3

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

'django.contrib.sessions.middleware.SessionMiddleware'

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

'django.contrib.sessions'

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

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