在Django中创建一个会话

时间:2010-02-19 00:28:05

标签: django session

到目前为止,Django的文档太技术化了。如何创建会话并在其中存储变量或从中获取变量?我是Django框架的新手,因此文档太技术化了。会话是我的“最后一步”。

3 个答案:

答案 0 :(得分:27)

假设您想要基于数据库的会话(Django还提供基于文件的会话和基于缓存的会话):

  1. 打开settings.py并找到MIDDLEWARE_CLASSES。将'django.contrib.sessions.middleware.SessionMiddleware'添加到列表中。
  2. 在同一文件中查找INSTALLED_APPS,然后在其中添加'django.contrib.sessions'
  3. 从命令行运行manage.py syncdb
  4. 初始设置完成后,您可以在视图中使用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'),