1、Python Web开发基础教程(Django版)第8章Django工具本章主要内容:Admin站点 用户认证 发送 E-mail 会话控制8.1 Admin 站点本节主要内容管理用户管理组管理模型8.1.1 启用Admin站点要使用Admin站点,需先完成6个步骤的操作:注册 应用、注册上下文处理器、注册中间件、配置URL、迁移数据库和创建超级用户。在执行django-admin命令创建项目时,Django会自动 完成前4个步骤。1.注册应用在settings.py项目配置文件的INSTALLED_APPS变量中注册Admin应用以及相关的支持 应用,不例代码如下。一INSTALLED_AP
2、PS=,django.contrib.admin,django.contrib.auth1,django.contrib.contenttypes,django.contrib.sessions1,django.contrib.messages1,#Admin站点#用户认证系统#模型权限#会话管理#消息管理2.注册上下文处理器在TEMPLATES模板配置变量的OPTIONS参数中包含auth和messages上下文处理器,示例代码如下。TEMPLATES=(BACKEND:django.template.backends.django.DjangoTemplates,DIRS:zAPP.DIR
3、SiTrue,OPTIONS:!context_processors:django.contrib.auth.contexCprocessors.auth,#用 户认证django.contrib.messages.context_processors.messages,#消,息管理,L3.注册中间件爷模板配置变量MIDDLEWARE中包含AuthenticationMiddleware中间件和MessageMiddleware中间件,示例代码如MIDDLEWARE=django.contrib.auth.middleware.AuthenticationMiddleware#用户认证djan
4、go.contrib.messages.middleware.MessageMiddleware1,#消息管理默认情况下,Admin站点使用英文。如果要使用中文,可注册本地化中间件,示例代码如下。MIDDLEWARE=django.middleware.locale.LocaleMiddleware1,#本地化中间件4.配置URL在urls.py文件中添加Admin站点的URL配置,示例代码如下。from django.contrib import adminfrom django.urls import pathurlpatterns=pathfadmin/1,admin.site.urls
5、)f#Admin站点URL配置启动开发服务器后,在浏览器中访问http:i27.o.o.i:8ooo/admin5.迁移数据库 Admin站点默认在数据库中保存相关数据。在访问Admin站点 之前,应先执行数据库迁移操作,创建相关的数据表。例如,下面的命令在D盘创建项目ch叩ter8,并执行数据库迁移 操作。D:django-admin startproject chapters D:cd chapters D:chapter8python manage.py makemigrations D:chapter8python manage.py migrate6.创建超级用户登录Admin立点点
6、的用户必须具有超级用户权限(is_suReruser属 性为True)或者具宥访问Admin站点的权限(is_staf偏性为True)o下面的命令为项目创建超级用户。D:chapter8python manage.py createsuperuser Username(leave blank to use xbg):admin Email address:Password:Password(again):Superuser created successfully.8.1.2管理用户登录Admin站点演示8.1.3管理组登录Admin站点演示8.1.4管理模型,默认情况下,Admin站点不提供
7、模型管理功能。要在Admin站点中管理应用中的模型,需要修改应用 的admin.py文件,在文件中注册模型。实例:为本章实例项目添加一个应用,并在应用中定义模型,然 后在Admin站点中管理该模型。1.为本章实例项目添加应用在Windows命令行中进入项目主文件夹,执行下面的命令创建test应用。D:chapter8python manage.py startapp test2.定义模型修改test应用中的models.py文件,定义模型,代码如下。from django.db import modelsclass person(models.Model):name=models.CharFi
8、eld(max_length=8)age=models.SmalllntegerField()3.注册应用修改项目配置文件settings.py,在INSTALLED_APPS变量中添力口test应 用,示例代码如下。INSTALLED_APPS=test,-4.执行数据库迁移操作 执行下面的命令完成数据库迁移操作。D:chapter8python manage.py makemigrations D:chapter8python manage.py migrate5注册模型 修改应用的admin.py文件,注册模型,代码如下。from django.contrib import admin
9、from.models import person admin.site,register(person)#注册模型-6.在Admin站点中管理模型 X0 Site administration|Django s X+Users+Add ChangeMy actionsPersons+Add,Change+test2 User+testl User,auth_group8.2用户认证本节主要内容用户认证相关模型 控制台用户管理 内置认证视图 自定义视图中的身份认证邛艮制页面登录访问 限制页面访问权限8.2.1用户认证相关模型,Django使用内置的User、Permission和Gro叩模型来
10、管 理用户认证的相关数据。1.User模型 User模型用于管理用户数据,模型包含的字段如下。username:用户名,必填字段。最长工5。个字符。可以包含字母、数字、_、+、.和-等字符。-first_name:名字,可选字段。最长3。个字符。,last_name:姓氏,可选字段。最长工5。个字符。,email:电子邮件地址,可选字段。password:存储密码的哈希值,可选字段。密码可包含任意字符。groups:多对多关系,可选字段。关联用户组。user_permissions:多对多关系,可选字段。关联用户权限。is_staff:是否允许访问Admin站点,可选字段。为True时表示账户
11、可以访问Admin站点。-is_active:是否为活动账户,可选字段。为True时表示用户账户为活动账户,非活动账户被禁止访问。-is_superuser:是否为超级用户,可选字段。为True时表示用户具有所有权限,否则为普通用户。last Jogin:用户上次登录的日期时间,可选字段。datejoined:创建账户的日期时间,可选字段。,在数据库中,User模型对应的数据表为auth_user2.Permission模型 Permission模型用于管理权限数据,模型包含的字段如下。,name:权限名称,必填字段。最长255个字符。content_type:引用数据表django_cont
12、ent_type的id字段,必填字段。数据表 django_content_type保存应用包含的模型记皋。codename:用于编程的权限名称,必填字段。最长工oo个字符。在数据库中,Permission模型对应的数据表为auth_permission3.Group模型Gro叩模型用于管理组数据,模型包含的字段如下。name:组名称,必填字段。最长8o个字符。,permissions:多对多关系,关联权限。,在数据库中,Gro叩模型对应的数据表为auth_gro叩4.模型关系Usfr模型与Permission模型之间是多对多关系,该关系在数据库中对应 的数据表为 auth_user_user
13、_permissionsUser模型与Group模型之间是多对多关系,该关系在数据库中对应的数 据表为 auth_user_groups Group模型与Permission模型之间是多对多关系,该关系在数据库中对 应的数据表为 auth_group_permissions8.2.2控制台用户管理可在Admin站点中交互式地完成添加、删除和修改等 用户管理操作,详细内容请参考8.L2节。本节主要介绍如何通过代码完成用户管理。1.创建用户 调用create。方法创建User对象,示例代码如下。user=User.objects.create(username=,testuser,)user.se
14、t_password(i23456,)user.save(),注意,为用户设置密码应调用set_password()方法,该方法将明文密码转换成的哈希山存入password字段。,可调用User模型提供的create_user()和create_s叩eruser()方法 来创建用户,示例代码如下。user=User.objects.create_user(,testuser3,/,/,123456)user=User.objects.create_superuser(,testuser4,/,/,123456),create_user()方法用于创建普通用户,create_superuser(
15、)方法 用于仓建超级用户。2.修改用户 可通过模型对象修改用户相关属性,示例代码如下。user=User.objects.get(username=ltestuserl)user.email=|工23456qq.coirT user.save()3.HI除用户 调用模型对象的delete。方法可删除用户,示例代码如下。user=User.objects.get(username=testi,)user.delete()(i,admin.LogEntry:o,auth.Usegroups:o,auth.Usecusepermissions:o,auth.User1:1)4.验证用户 authen
16、ticate。方法将用户名和密码作为参数来验证用户。如果用户名和密码正确,方 法返回关联用户名的User模型对象;未通过验证时,返回None。例如:from django.contrib.auth import authenticate user=authenticate(username=testuserl/password=123456)print(user)Testuser user=authenticate(username=testuserl/password=456)print(user)None5.设置权限 User模型与Permission模型之间是多对多关系,可以从关系的两端
17、为用户设置权限。通过User对象设置权限,示例代码如下。from django.contrib.auth.models import Permission admins=Peririission.objects.filter(codename_endswith=peririission,)#获得权限 user=User.objects.get(username=testuser)user.user_permissions.set(admins)#设置权限 for p in user.user_permissions.all():#查看权限,.print(p.codename/p.name),a
18、dd_permission Can add permission,change_permission Can change permission,delete_permission Can delete permission,view_permission Can view permission创建新权限,并授权给用户,示例代码如下。from test.models import person from django.contrib.contenttypes.models import ContentType content_type_id=ContentType.objects.get_fo
19、r_model(person)p=Permission.objects.create(codename=can_analyse_person,nameJ 能分析 person 数据:content_type=content_type_id)user.user_permissions.add(p)#添力口权限 也可通过Permission模型为用户授权,示例代码如下。p=Permission.objects.get(codename=view_permission,)#获得权限对象 p.user_set.add(user)#为权限添加关联用户 p.user_set.all()QuerySet 也
20、可通过将用户加入组的方式来为用户授权,示例代码如下。g=Group.objects.get(id=i)g.user_set.add(user)#将用户加入组8.2.3内置认证视图 Django在django.contrib.auth.views.py中定义了几个用于登录、注销和密码管理的认证视图 类。要使用内置的认证视图,首先需要在配置文件中添加下面的URL配置。u ripatterns=path(accounts/f includeCdjango.contrib.auth.urls),#导入内置认证视图URL配置 pathCaccounts/profile/ogViews.logiriOk)
21、,#映射自定义的视图Django在默认视图中会使用项目配置文件settings.py中设置 的3个URL。LOGIN_URL:默认的登录URL,默认值为“/accounts/login/LOGIN_REDIRECT_URL:默认的登录成功后转向的URL,默认值为“/accounts/profile/。Django没有为“/accounts/profile/定义默认 视图,上面代码中的“log_viewsogin_ok”是自定义的视图。LOGOUT_REDIRECT_URL:默认的注销登录后转向的URL,默认值为 None。1.登录视图LoginView,登录视图用于处理用户登录操作,该视图默认
22、的URL模式名称为 login0 在模板中可用%url login%获取登录视图URL。在采用GET方法访问登录视图时,视图显示默认登录表单。,第用户输入里月名那蜜屿后再显交女单时“登凌视图使用用户数据 表auth_user单的数据验证用户名和密码是否正流。,用户通过验证时,视图调用login。方法,将用户的User对象写入 Session对象,同时会在auth_user表中记录登臬时间。,用户未通过验证时,重新显示登录页面,并在页面中显示错误提示 登录视图会向模板传递下列变量。form:表单对象,默认为AuthenticationForm,可以使用自 定义的登录表单。next:登录成功后的重
23、定向URL。通常,可以在模板中用一 个隐藏的表单字段设置next,示例代码如下。site:当前站点ID,可在配置文件中用SITE_ID变量进行设置。-site_name:站点名称,视图将其设置为request.METASERVER_NAMEo2.注销登录视图Logoutview 注销登录视图用于处理用户注销登录操作,注销登录会删除 Session中的用户信息。注销登录视图的默认URL模式名称为logout。注销登录视图会向模板传递下列变量。title:字符串“Logged out”。site:当前站点ID,默认为SITED变量值。site_name:站点名称。注销登录视图使用Admin站点的默
24、认注销登录模板。3.密码修改视图 PasswordChangeView密码修改视图用于修改用户密码,视图的默认URL模式名称为password_change。密码修改视图会向模板传递一个form变量,用于引用密码修改表单。默认情况下,密码修改视图使用Admin站点的密码修改模板。修改前面的登录成功视图模板文件login_ok.html,添加修改密码链接,代码如下。%if user.is_authenticated%登录成功,欢迎:user.username,登录时间:user.lastjogin 修改密码%if perms.test%4.密码修改完成视图PasswordChangeDoneVi
25、ew密码修改完成视图用于处理成功完成密码修改后的信息,默认的URL模 式名称为password_change_done。密码修改完成视图显示的默认响应 页面如图8-3。所示。Django administrationHome Password changePassword change successfulYour password was changed.5.密码重置视Password ResetView 密码重置视图用于在用户忘记密码时申请重置密码,视 图默认的URL模式名祢为password_reset。密码重置视图的默认模板文件为registration/password_reset_
26、form.html,吗时,视图还使电F面的两个默认模板。密码重置邮件内容模板:registration/password_reset_email.html,可用视图的email_template_name属性设置。密码重置邮件主题模板:registrationZpassworcl_reset_subject.txt,可用视图的subject_template_name属性设置。6.密码重置完成视图PasswordResetDoneView密码重置完成视图的默认URL模式名称为password_reset_done,默认 模板文件为 registration/password_reset_don
27、e.html。如果没有为密码重置视图设置success_url(成功发送密码重置邮件后的 重定向URL),Django就会调用密码量置完成视图。如果用方提供的E-mail地址在auth_user表中存在,但用方处于不活动状 态或者密码无效时,Django也会调用密码重置完成视图,但不会发送 密码重置邮件。7.密码重置确认视图PasswordResetConfirmView 用户在密码重置邮件中单击链接,跳转到密码重置视图返回的新密码设置页 面。密码重置确认视图默认的URL模式名称为password_reset_confirm 默认模板文件为 registration/password_rese
28、t_confirm.html。在配置视图URL时,应在URL中包含两个参数:uidb64和token,示例代码如O pathCreset/|/views.PasswordResetConfirmView.as_view()z name=,password_reset_confirm)/其中uidb64是基于64位的用户ID编码,token是用于检查密码是否有效的令牌8.新密码段置完成视图PasswordResetCompleteView 成功完成新密码设置后调用新密码设置完成视图 视图默认的URL模式名称为password_reset_complete 默认的模板文件为 registratio
29、n/password_reset_complete.html。8.2.4自定义视图中的身份认证在自定义视图中,可调用django.contrib.auth模块提供的下列方法进行身份认证。authenticate():以用户名和密码为参数验证用户。用户名 和密码均正扁时,返回该用户的User对象,否则返回None。login():执行登录注册。将用户的User对象保存到Session中。用户登录之前保存在Session中的数据,在登录后仍然会保 留。logout():注销登录,删除Session中的会话数据。8.2.5限制页面登录访问可以使用自定义方式或者登录装饰器来限制页面登录 访问。1.使用
30、自定义方法限制页面登录访问通常,可通过request.user.is_authenticated的值来判断用户是否已经登录,其值为True表示用户已经登录,否则未 登录。一下面的视图在用户未登录时跳转到登录页面,用户成功登录后,再返回登录前视图。from chapters import settings def testlogin(request):if not request.user.is_authenticated:return redirect(%s?next=%s%(settings.LOGIN_URL,request.path)#未登录时跳转else:news=欢迎:%s,你已经登
31、录,可以访问本页面,注销登录?%(request,user,username/reverseClogoutdiy)return HttpResponse(news)settings.LOGINJJRL是在项目配置文件中定义的默认登录URL2.使用登录装饰器来限制页面登录访问登录装饰器login_required用于限制页面只能在用户登录后访问。例如,前面的testlog in视图可改写为如下代码。from django.contrib.auth.decorators import login_requiredlogin_requireddef testlogin2(request):newsd
32、欢迎:%s,你已经登录,可以访问本页面,注销登录?%(request.user.username,reverseClogoutdiy)return HttpResponse(news)8.2.6 限制页面访问权限装饰器permission_required可用于限制访问页面必须具备特定权限,示例代码如下。from django.contrib.auth.decorators import permission_requiredpermission_requiredCtest.can_testlog)def testlogin3(request):news=欢迎:%s,你已经登录,可以访问本页面
33、,注销登录?%(request.userusemamejeverseClogoutdiy)return HttpResponse(news)8.2.7 自定义页面访问限制条件 装饰器useiggsses.test允许使用自定义函数来检测已登录用户是否可以访问页面,示例代码如卡。def check_in_blacklist(user):#检测用户是否在黑名单中 return not user.username in settings.LOGIN_BLACKLISTuser_passes_test(check_in_blacklist)def testlogin4(request):newsd欢迎
34、:%s,你已经登录,可以访问本页面,注销登录?%(request.user.username,reverseClogoutdiy)return HttpResponse(news)装饰器user_passes_test(check_in_blacklist)在用户未登录或者属于黑名单用户 时,会使贡面重定向到登录页面。8.3 发送 E-mail本节主要内容,E-mail配置发送密码重置邮件自定义E-mail发送,E-mai后端8.3.1 E-mail fig要发送E-mail,需要配置SMTP服务,并在项目配置文 件中设置E-mail选项。1.配置SMTP服务以QQ邮件为例,进入QQ邮箱,在账
35、户设置中开启 SMTP服务,如图8-37所示。POP3/IMAP/SMTP/Exchange/CadDAV/CalDAV 服务开启服务:POP3/SMTP服务(如何使用Foxmail等软件收发邮件?)已开启|关闭如果SMTP服务器已经开启,可先关闭该服务器,然 后重新开启。这样,会收到一个授权密码,该密码用 于在客户端发送E-mail。2.设置E-mail选项在项目配置文件settings.py中添加下列设置。EMAIL_HOST=EMAIL_PORT=465EMAIL_HOST_USER=XXX,EMAIL_H0ST_PASSW0RD=XXX EMAIL_USE_SSL=True#发送邮件服
36、务器#邮件服务器端口#发送邮件账户#发送邮件授权密码#与517服务器通信时是否使用SSL连接DEFAULT_FROM_EMAIL=XXX#默认邮件发送人8.3.2发送密码重置邮件-823节介绍了Django提供的重置密码相关的内置视图。要发送密码重置邮件,在浏览器中访问http:i27.o.o.i:8ooo/accounts/password_reset,打开密码重置页面,如图8-38由示。0 Password reset X+C 127.0.0.1:8000/accounts/password_reset/Django administrationHome Password resetPas
37、sword resetForgotten your password?Enter your email address below,and well email instructions for setting a new one.Email address:Reset my password8.3.3自定义E-mail发送 django.coremail模块提供的send_mail()方法用于发送E-mail其基本格式如下。send_mail(subjectz message,from_emailz reci pie nt_listz fail_silently=Falsezauth_use
38、r=Nonez auth_password=None,connection=Nonez html_message=None)其中,subject、message、from_email和recipientist是必 选参数,其他为可选参数。,各参数含义如下。subject:邮件主题字符串。message:邮件内容字符串,text/plain格式。from_email:发件人E-mail地址。recipientjist:收件人E-mail地址列表。fail_silently:True或False。为False时,邮件发送失败会触发异常 smtplib.SMTPExceptiono auth_use
39、r:发送账户,默认为EMAIL_HOST_USER值。auth_password:发送邮件的授权密欣 默记为EMAIL_HOST_PASSWORD值。connection:邮件发送后端,默认为SMTP后端。html_messaqe:HTML格式的邮件内容,text/html格式。邮箱通常显示 HTML格式的邮件内容,并可切换为纯文木的message内容。实例-1.定义邮件发送表单-2.定义邮件发送视图-3.定义邮件发送模板-A.配置URL8.3.4 E-mail 后端邮件发送操作由E-mail后端完成。Django默认使用SMTP后端,即邮件由SMTP服务器 发送。也可在Django配置文件中
40、明确使用的后端配置,示例代码如下。EMAIL_BACKEND=django.core.mail,backends.snritp.EmailBackend1 使用SMTP后端时,需在配置文件中配置下列变量。EMAIL_HOST:邮件发送服务器地址。EMAIL_PORT:邮件发送服务器端口。EMAIL_HOST_USER:发送邮件使用的账户名称。EMAIL_HOST_PASSWOR:发送邮件使用的授权密码。EMAIL_USE_SSL:发送邮件时是否使用SSL连接。DEFAULT_FROM_EMAIL:默认发件人。1.控制台后端在配置文件中使用下面的代码启用控制台后端。EMAIL_BACKEND=d
41、jango.core.mail,backends.console.EmailBackend控制台后端会将邮件发送到控制台。运行开发服务 器时,可在控制台中看到邮件信息,如图8-42所示。|Content-Type:text/plain;charset=rutf-8/zMIME-Version:1.0Content-Transfer-Encoding:8bitSubject:testFrom:To:Date:Wed,31 Jul 2019 12:52:58-0000Message-ID:测试邮件31/Jul/2O19 20:52:58 POST/sendemail/HTTP/1.T 200 88
42、92.文件后端 文件后端会将邮件信息写入文件。在配置文件中使用下面的代码启用 文件后端。EMAIL_BACKEND=django.core.mail,backends.filebased.Email Backend EMAIL_FILE_PATH=os.path.join(BASE_DIR,test/emaiLfiles)#邮件文 件路径每次发送邮件时,Django会将时间戳作为文件名,将邮件内容写入文 本文件3.内存后端在配置文件中使用下面的代码启用内存后端。EMAIL_BACKEND=django.core.mail,backends.locmem.Email Backend在使用内存后端
43、时,Django会为django.core.mail模块创建一个outbox属 性,用其保存邮件内容。outbox属性值是一个列表,其中的每一封邮 件是一个EmailMessage对象。4.虚拟后端在配置文件中使用下面的代码启用虚拟后端。EMAIL_BACKEND=django.core.mail,backends.dummy.Email Backend1使用虚拟后端时,可在浏览器中完成邮件发送操作,但虚拟后端不对 邮件执行任何操作。8.4会话控制本节主要内容启用会话控制会话对象方法在视图中使用会话 会话通常指浏览器与Web服务器之间的通信。HTTP协议是无状态的,Web服务器无法知道用户上一
44、次的会话 城据。会话控制维护用户在访问网站过程中的状态。会话控制通常使用Session和Cookie来实现。通常把Session称为会话对象,Web服务器会为每个用户创建一 个Session对靠Session对豪在服务器端保存国户数癌。Cookie用于在浏览器端保存用户数据,Web服务器可创建和读 写Cookie。8.4.1 启用会话控制 启用Django会话控制包括注册会话应用、启用会话中间件和配置会话引擎等 操作。1.注册会话应用 在配置文件的INSTALLED_APPS变量中添力口django.contrib.sessions应用,示例 代码如下。一 INSTALLED_APPS=1 d
45、jango.contrib.sessions,默认情况下,Django会注册django.contrib.sessions应用。如果不使用会话控 制,可从INSTALLED_APPS变量吊将其删除,以节省项目运行开销。-2.启用会话中间件在配置文件的MIDDLEWARE变量中添加会话中间件(Django 默认启用),示例代码如下。MIDDLEWARE=django.contrib.sessions,middleware.Session Middleware-3.配置会话引擎会话引擎负责存储会话数据。配置文件中的 SESSION_ENGINE变量用于配置会话引擎。Django提供5种会话引擎:数
46、据库后端、缓存、数据 库+缓存、文件和Cookie。基于数据库后端的会话数据库后端会话引擎用于实现基于数据库的会话,其配置语句 如下。SESSION_ENGINE=django.contrib.sessions.backends.db,数据库后端会话引擎是印50的默认设置,可以省略 SESSION_ENGINE变量的配置。基于数据库的会话使用数据库中的django_session表存储会话数 据。可 以通过 django.contrib.sessions.models.Session 模型访问 django_session 表。djauo_session表保存会话关键字、会话数据和会话过期时间
47、等基于缓存的会话缓存会话引擎用于实现基于缓存的会话,其配置语句如下。SESSION_ENG IN E=django.contrib.sessions,backends.cache基于缓存的会话在高速缓存中存储会话数据,除了需要配置缓存会话引擎外,还需要配置缓存。例如,下面的语句设配置Django在数据库表中存储缓存数 据。CACHES=default:-BACKEND:django.core.cache.backends.db.DatabaseCache,LOCATION1:chapter8_cache_tabIe#指定数据库缓存表名称同时,执行下面的命令创建数据库缓存表。python man
48、age.pycreatecachetable基于数据库+缓存的会话数据库+缓存会话引擎用于实现基于数据库+缓存的会话,其配置语句 如下。SESSION_ENGINE=,django.contrib.sessions.backends.cached_db,使用基于数据库+缓存的会话时,Django将会话数据同时写入缓存和数 据库表。基于文件的会话文件会话引擎用于实现基于文件的会话,引擎将会话数据写入临时文 件,其配置语句如下。SESSION_ENGINE=django.contrib.sessions.backends.file,SESSION_FILE_PATH=chapter8/sessio
49、n_file#会话文件路径基于Cookie的会话Cookie会话引擎用于实现基于Cookie的会话,引擎将会话数据写入 Cookie,其配置语句如下。SESSION_ENGINE=django.contrib.sessions.backends.signed_cookies,4.会话相关配置配置文件中的会话相关配置如下。SESSION_CACHE_ALIAS=default SESSION_COOKIE_NAME=sessionid SESSION_COOKIE_AGE=60*60*24*7*2 SESSION_COOKIE_DOMAIN=None SESSION_COOKIE_SECURE=False SESSION_COOKIE_PATH=SESSION_COOKIE_HTTPONLY=True SESSION_SAVE_EVERY_REQUEST=False SESSION_EXPIRE_AT_BROWSER_CLOSE=False#存放会话数据的后端名称,默认为default#Cookie中的会话名称,默认为sessionid#Cookie有效时间,默认为2周#Cookie中的会话域名,默认为None#是否使用HTTPS协议传输Cookie,默认为False#Cookie中的会话路径,默认为/#会话Cookie是否只支持HTTP传输,默认为True#每次请求后保存会话,