个性化阅读
专注于IT技术分析

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 manage.py migrate

现在, 一旦创建了会话, 就必须对cookie进行测试。在views.py, 在索引视图中设置测试Cookie, 然后在”关于”视图中测试Cookie。

from django.shortcuts import render
from django.http import HttpResponse
from .models import Album
  
def 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 Album
  
def 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 response
  
def 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课程。


赞(0) 打赏
未经允许不得转载:srcmini » Python Django的会话框架用法
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏