Python Django的会话框架用法

先决条件:Django安装|Django简介
会话框架可用于为网站中的匿名用户提供持久行为。会话是Django用来在每个站点访问者基础上存储和检索数据的机制.Django使用包含特殊会话ID的cookie。
要在Django中启用会话, 你需要确保settings.py:
MIDDLEWARE_CLASSES已激活” django.contrib.sessions.middleware.SessionMiddleware”
INSTALLED_APPS添加了” django.contrib.sessions” 。

# Application definition INSTALLED APPS = [ 'dhun' , 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , ] MIDDLEWARE = [ 'django.middleware.securitY.SecuritYMiddleware' , 'django.contrib.sessions.middleware.SessionMiddLeware' , 'django.middleware.common.CommonMiddleware' , 'django.middleware.csrf.CsrfViewMidd1eware' , 'django.contrib.auth.middleware.AuthenticationMiddleware' , 'django.contrib.messages.middleware.MessageMiddleware' , 'django.middleware.clickjacking.XFrameOptionsMiddleware' , ]

启用会话后, 会话数据库表必须创建, 并为此执行以下命令:
python manage.py syncdb

【Python Django的会话框架用法】运行上一个命令后, 如果没有发现任何错误, 请稍后运行下面给出的命令, 以将保存到迁移文件中的更改最终反映到数据库中。
python manage.py migrate

现在, 一旦创建了会话, 就必须对cookie进行测试。在views.py, 在索引视图中设置测试Cookie, 然后在” 关于” 视图中测试Cookie。
from django.shortcuts import render from django.http import HttpResponse from .models import Albumdef home(request) : a = Album.objects. all () return render(request, "dhun/home.html " , { "Album" :a})def index(request) : num_authors = Author.objects.count() request.session.set_test_cookie() num_visits = request.session.get( 'num_visits' , 0 ) request.session [ 'num_visits' ] = num_visits + 1 context = { 'num_books' :num_books, 'num_instances' :num_instances, 'num_instances available' :num_instances_available, 'num_authors' :num_authors, 'num_visits' :num_visits, }def about(request): LANGUAGE_CODE = 'en-us ' TIME_ZONE = 'UTC' if request.session.test_cookie_worked(): print ( "Cookie Tested !" ) request.session.delete_test_cookie()

看看到目前为止完成的工作。
首先通过此命令运行本地主机。 python manage.py运行服务器
然后在浏览器中打开http://localhost:8000/。
访问索引页面, 然后访问关于页面。 “ 经过Cookie测试!” 将被打印到控制台。
要了解该网站已被访问过多少次, 你必须在views.py中执行以下两项操作:
在索引视图功能中添加和更新代码/ li>
更新关于视图功能
from django.shortcuts import render from django.http import HttpResponse from .models import Albumdef home(request): a = AIbum. objects. all () return render(request, "dhun/home.html" , { "album" :a})def index(request): visits = int (reques.COOKIES.get( 'visits' , '0' )) response = HttpResponse(template.render(context))if request.COOKIES.has_key( 'last_visit' ): last_visit = request. COOKIES [ ' last_visit' ] last_visit_time = datetime.strptime(last_visit[: - 7 ], "%Y-%m-%d %H:%M:%S" ) " curr_time = datetime.now() if (curr_time—last_visit_time).days> O: response.set_cookie( 'visits ' , visits + 1 ) response. set_cookie( ' last_visit' , datetime.now()) else : response.set_cookie( ' last_visit' , datetime.now()) return responsedef about(request) : context = RequestContext(request) if request.COOKIES.has_key( ' visits ' ): v = request.COOKIES [ ' visits ' ] else : v = 0 return render_to_response( 'music/about.html' , { 'visits' :v}, context)

参考:https://docs.djangoproject.com/en/2.1/topics/http/sessions/
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

    推荐阅读