До сих пор документация для Django была слишком технической. Как создать сеанс и сохранить в нем переменные или получить от него переменные? Я новичок в структуре Django, поэтому почему Документация слишком технична. Сеансы - мой последний шаг.
Создание сеанса в Django
Ответ 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>")