在Django中创建会话
答
假设你想基于数据库会话(Django的同时也提供基于文件的会话,并根据缓存的会话):
- 打开settings.py,找到
MIDDLEWARE_CLASSES
。将'django.contrib.sessions.middleware.SessionMiddleware'
添加到列表中。 - 在同一个文件中找到
INSTALLED_APPS
,并在那里添加'django.contrib.sessions'
。从命令行运行。
初始设置后,您可以在视图中使用request.session
来在请求之间存储信息。
例如,这将存储的信息:
request.session['name'] = 'Ludwik'
,你可以为伊斯利检索:
print request.session['name']
或
if request.session['name'] == 'Ludwik':
print 'you are awesome!'
对于其他的东西,你可以用做request.session
对象请参阅the documentation。
答
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>")