PythonWeb开发基础教程 第8章 Django工具.pdf
《PythonWeb开发基础教程 第8章 Django工具.pdf》由会员分享,可在线阅读,更多相关《PythonWeb开发基础教程 第8章 Django工具.pdf(85页珍藏版)》请在咨信网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PythonWeb开发基础教程 第8章 Django工具 PythonWeb 开发 基础教程 Django 工具
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。