先决条件: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课程。
来源:
https://www.srcmini02.com/70050.html