到目前为止,Django的文档太技术化了。如何创建会话并在其中存储变量或从中获取变量?我是Django框架的新手,因此文档太技术化了。会话是我的“最后一步”。
答案 0 :(得分:27)
假设您想要基于数据库的会话(Django还提供基于文件的会话和基于缓存的会话):
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
对象执行其他操作,请参阅the documentation。
答案 1 :(得分:4)
Ludwik的答案是要走的路,但如果你想要更温和地介绍Django的世界,(the (free) Django Book)是必读的。 Chapter 15处理会话。
答案 2 :(得分:1)
MIDDLEWARE_CLASSES应该有 -
.config(['cfpLoadingBarProvider', function (cfpLoadingBarProvider) {
cfpLoadingBarProvider.includeSpinner = true;
cfpLoadingBarProvider.includeBar = true;
}])
INSTALLED_APPS应该有 -
'django.contrib.sessions.middleware.SessionMiddleware'
更改我们的登录视图以保存我们的用户名cookie服务器端 -
'django.contrib.sessions'
为登录表单创建formView视图,如果设置了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}
更改url.py文件以更改网址,使其与我们的新视图配对 -
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', {})
创建一个简单的注销视图,删除我们的cookie。
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'),