PythonWeb开发基础教程-第8章-Django工具课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《PythonWeb开发基础教程-第8章-Django工具课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PythonWeb 开发 基础教程 Django 工具 课件
- 资源描述:
-
1、Python Web开发基础教程(Django版)第8章 Django工具本章主要内容:Admin站点用户认证发送E-mail会话控制8.1 Admin站点本节主要内容管理用户管理组管理模型8.1.1 启用 Admin 站点 要使用Admin站点,需先完成6个步骤的操作:注册应用、注册上下文处理器、注册中间件、配置URL、迁移数据库和创建超级用户。在执行django-admin命令创建项目时,Django会自动完成前4个步骤。1 1注册应用注册应用 在settings.py项目配置文件的INSTALLED_APPS变量中注册Admin应用以及相关的支持应用,示例代码如下。INSTALLED_A
2、PPS=django.contrib.admin,#Admin站点站点 django.contrib.auth,#用户认证系统 django.contrib.contenttypes,#模型权限 django.contrib.sessions,#会话管理 django.contrib.messages,#消息管理 2 2注册上下文处理器注册上下文处理器在TEMPLATES模板配置变量的OPTIONS参数中包含auth和messages上下文处理器,示例代码如下。TEMPLATES=BACKEND:django.template.backends.django.DjangoTemplates,D
3、IRS:,APP_DIRS:True,OPTIONS:context_processors:django.contrib.auth.context_processors.auth,#用户认证用户认证 django.contrib.messages.context_processors.messages,#消息管理消息管理,3 3注册中间件注册中间件 在模板配置变量MIDDLEWARE中包含AuthenticationMiddleware中间件和MessageMiddleware中间件,示例代码如下。MIDDLEWARE=django.contrib.auth.middleware.Authen
4、ticationMiddleware,#用户认证用户认证 django.contrib.messages.middleware.MessageMiddleware,#消息管理消息管理 默认情况下,Admin站点使用英文。如果要使用中文,可注册本地化中间件,示例代码如下。MIDDLEWARE=django.middleware.locale.LocaleMiddleware,#本地化中间件本地化中间件 4 4配置配置URLURL 在urls.py文件中添加Admin站点的URL配置,示例代码如下。fromdjango.contribimportadmin fromdjango.urlsimpor
5、tpath urlpatterns=path(admin/,admin.site.urls),#Admin站点站点URL配置配置 启动开发服务器后,在浏览器中访问http:/127.0.0.1:8000/admin5 5迁移数据库迁移数据库 Admin站点默认在数据库中保存相关数据。在访问Admin站点之前,应先执行数据库迁移操作,创建相关的数据表。例如,下面的命令在D盘创建项目chapter8,并执行数据库迁移操作。D:django-adminstartprojectchapter8 D:cdchapter8 D:chapter8pythonmanage.pymakemigrations D
6、:chapter8pythonmanage.pymigrate6 6创建超级用户创建超级用户 登录Admin站点的用户必须具有超级用户权限(is_superuser属性为True)或者具有访问Admin站点的权限(is_staff属性为True)。下面的命令为项目创建超级用户。D:chapter8pythonmanage.pycreatesuperuser Username(leaveblanktousexbg):admin Emailaddress:Password:Password(again):Superusercreatedsuccessfully.8.1.2管理用户登录Admin站点
7、演示8.1.38.1.3管理组管理组登录Admin站点演示8.1.48.1.4管理模型管理模型默认情况下,Admin站点不提供模型管理功能。要在Admin站点中管理应用中的模型,需要修改应用的admin.py文件,在文件中注册模型。实例:为本章实例项目添加一个应用,并在应用中定义模型,然后在Admin站点中管理该模型。1为本章实例项目添加应用为本章实例项目添加应用 在Windows命令行中进入项目主文件夹,执行下面的命令创建test应用。D:chapter8pythonmanage.pystartapptest 2定义模型定义模型 修改test应用中的models.py文件,定义模型,代码如下
8、。fromdjango.dbimportmodels classperson(models.Model):name=models.CharField(max_length=8)age=models.SmallIntegerField()3注册应用注册应用 修改项目配置文件settings.py,在INSTALLED_APPS变量中添加test应用,示例代码如下。INSTALLED_APPS=test,4执行数据库迁移操作执行数据库迁移操作 执行下面的命令完成数据库迁移操作。D:chapter8pythonmanage.pymakemigrations D:chapter8pythonmanag
9、e.pymigrate5注册模型注册模型修改应用的admin.py文件,注册模型,代码如下。fromdjango.contribimportadminfrom.modelsimportpersonadmin.site.register(person)#注册模型6在在Admin站点中管理模型站点中管理模型8.2 用户认证本节主要内容用户认证相关模型控制台用户管理内置认证视图自定义视图中的身份认证限制页面登录访问限制页面访问权限8.2.18.2.1用户认证相关模型用户认证相关模型Django使用内置的User、Permission和Group模型来管理用户认证的相关数据。1 1UserUser模型
10、模型 User模型用于管理用户数据,模型包含的字段如下。username:用户名,必填字段。最长150个字符。可以包含字母、数字、_、+、.和-等字符。first_name:名字,可选字段。最长30个字符。last_name:姓氏,可选字段。最长150个字符。email:电子邮件地址,可选字段。password:存储密码的哈希值,可选字段。密码可包含任意字符。groups:多对多关系,可选字段。关联用户组。user_permissions:多对多关系,可选字段。关联用户权限。is_staff:是否允许访问Admin站点,可选字段。为True时表示账户可以访问Admin站点。is_active:
11、是否为活动账户,可选字段。为True时表示用户账户为活动账户,非活动账户被禁止访问。is_superuser:是否为超级用户,可选字段。为True时表示用户具有所有权限,否则为普通用户。last_login:用户上次登录的日期时间,可选字段。date_joined:创建账户的日期时间,可选字段。在数据库中,User模型对应的数据表为auth_user2 2PermissionPermission模型模型 Permission模型用于管理权限数据,模型包含的字段如下。name:权限名称,必填字段。最长255个字符。content_type:引用数据表django_content_type的id字
12、段,必填字段。数据表django_content_type保存应用包含的模型记录。codename:用于编程的权限名称,必填字段。最长100个字符。在数据库中,Permission模型对应的数据表为auth_permission3 3GroupGroup模型模型Group模型用于管理组数据,模型包含的字段如下。name:组名称,必填字段。最长80个字符。permissions:多对多关系,关联权限。在数据库中,Group模型对应的数据表为auth_group4 4模型关系模型关系 User模型与Permission模型之间是多对多关系,该关系在数据库中对应的数据表为auth_user_user
13、_permissions User模型与Group模型之间是多对多关系,该关系在数据库中对应的数据表为auth_user_groups Group模型与Permission模型之间是多对多关系,该关系在数据库中对应的数据表为auth_group_permissions8.2.28.2.2控制台用户管理控制台用户管理可在Admin站点中交互式地完成添加、删除和修改等用户管理操作,详细内容请参考8.1.2节。本节主要介绍如何通过代码完成用户管理。1 1创建用户创建用户调用create()方法创建User对象,示例代码如下。user=User.objects.create(username=test
14、user)user.set_password(123456)user.save()注意,为用户设置密码应调用set_password()方法,该方法将明文密码转换成的哈希值存入password字段。可调用User模型提供的create_user()和create_superuser()方法来创建用户,示例代码如下。user=User.objects.create_user(testuser3,123456)user=User.objects.create_superuser(testuser4,123456)create_user()方法用于创建普通用户,create_superuser()方
15、法用于创建超级用户。2 2修改用户修改用户可通过模型对象修改用户相关属性,示例代码如下。user=User.objects.get(username=testuser)user.email=user.save()3 3删除用户删除用户 调用模型对象的delete()方法可删除用户,示例代码如下。user=User.objects.get(username=test1)user.delete()(1,admin.LogEntry:0,auth.User_groups:0,auth.User_user_permissions:0,auth.User:1)4 4验证用户验证用户 authentica
16、te()方法将用户名和密码作为参数来验证用户。如果用户名和密码正确,方法返回关联用户名的User模型对象;未通过验证时,返回None。例如:fromdjango.contrib.authimportauthenticate user=authenticate(username=testuser,password=123456)print(user)Testuser user=authenticate(username=testuser,password=456)print(user)None5 5设置权限设置权限 User模型与Permission模型之间是多对多关系,可以从关系的两端为用户设
17、置权限。通过User对象设置权限,示例代码如下。fromdjango.contrib.auth.modelsimportPermission admins=Permission.objects.filter(codename_endswith=permission)#获得权限 user=User.objects.get(username=testuser)user.user_permissions.set(admins)#设置权限 forpinuser.user_permissions.all():#查看权限.print(p.codename,p.name).add_permissionCan
18、addpermission change_permissionCanchangepermission delete_permissionCandeletepermission view_permissionCanviewpermission 创建新权限,并授权给用户,示例代码如下。fromtest.modelsimportperson fromdjango.contrib.contenttypes.modelsimportContentType content_type_id=ContentType.objects.get_for_model(person)p=Permission.objec
19、ts.create(codename=can_analyse_person,name=能分析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 也可通过将用户加入组的方式来为用户授权,示例代码如下。g=Group.obje
20、cts.get(id=1)g.user_set.add(user)#将用户加入组8.2.38.2.3内置认证视图内置认证视图 Django在django.contrib.auth.views.py中定义了几个用于登录、注销和密码管理的认证视图类。要使用内置的认证视图,首先需要在配置文件中添加下面的URL配置。urlpatterns=path(accounts/,include(django.contrib.auth.urls),#导入内置认证视图导入内置认证视图URL配置配置 path(accounts/profile/,log_views.login_ok),#映射自定义的视图映射自定义的视
21、图 Django在默认视图中会使用项目配置文件settings.py中设置的3个URL。LOGIN_URL:默认的登录URL,默认值为“/accounts/login/”LOGIN_REDIRECT_URL:默认的登录成功后转向的URL,默认值为“/accounts/profile/”。Django没有为“/accounts/profile/”定义默认视图,上面代码中的“log_views.login_ok”是自定义的视图。LOGOUT_REDIRECT_URL:默认的注销登录后转向的URL,默认值为None。1 1登录视图登录视图LoginViewLoginView 登录视图用于处理用户登录
22、操作,该视图默认的URL模式名称为login。在模板中可用%urllogin%获取登录视图URL。在采用GET方法访问登录视图时,视图显示默认登录表单。当用户输入用户名和密码后再提交表单时,登录视图使用用户数据表auth_user中的数据验证用户名和密码是否正确。用户通过验证时,视图调用login()方法,将用户的User对象写入Session对象,同时会在auth_user表中记录登录时间。用户未通过验证时,重新显示登录页面,并在页面中显示错误提示信息。登录视图会向模板传递下列变量。form:表单对象,默认为AuthenticationForm,可以使用自定义的登录表单。next:登录成功后
23、的重定向URL。通常,可以在模板中用一个隐藏的表单字段设置next,示例代码如下。site:当前站点ID,可在配置文件中用SITE_ID变量进行设置。site_name:站点名称,视图将其设置为request.METASERVER_NAME。2 2注销登录视图注销登录视图LogoutViewLogoutView 注销登录视图用于处理用户注销登录操作,注销登录会删除Session中的用户信息。注销登录视图的默认URL模式名称为logout。注销登录视图会向模板传递下列变量。title:字符串“Loggedout”。site:当前站点ID,默认为SITE_ID变量值。site_name:站点名称。
24、注销登录视图使用Admin站点的默认注销登录模板。3 3密码修改视图密码修改视图PasswordChangeViewPasswordChangeView 密码修改视图用于修改用户密码,视图的默认URL模式名称为password_change。密码修改视图会向模板传递一个form变量,用于引用密码修改表单。默认情况下,密码修改视图使用Admin站点的密码修改模板。修改前面的登录成功视图模板文件login_ok.html,添加修改密码链接,代码如下。%ifuser.is_authenticated%登录成功,欢迎:user.username,登录时间:user.last_login 修改密码修改密
展开阅读全文