广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
9.1.1 用户的注册与认证
在项目的迭代过程中,软件的需求是经常变化的,现在继续对站点的功能进行扩展,使得用户必须登录以后才能对博客进行评论。对于这样的需求,必须在站点中提供一个用户注册和登录的入口,使得用户可以在页面中进行注册和登录。实现用户的注册和登录,常规的做法是在模型层中定义一个用户模型,然后将用户的基本信息保存至数据库。用户登录时,将用户的输入信息进行验证,如果验证通过就在服务端记录用户的登录状态信息。
本节的内容着重介绍使用django内置的用户模型来实现用户的注册,在9.2节的内容中将介绍如何使用内置的auth模块来对用户进行认证, 在9.3节的内容中会介绍如何对内置的用户模型进行扩展。
9.1.2 内置的User模型
User模型是django内置的用户模型,在django的用户认证系统中只能存在一个用户模型。在视图中使用User模型,需要从django.contrib.auth.models中导出。User模型的主要字段:
描述
| |
username | 创建用户对象时的必传参数,表示用户的登录名 |
password | 创建用户对象时的必传参数,表示用户的登录密码,django会将用户输入的原始密码转为哈希字符串保存至数据库中。 |
创建用户对象时的可选参数,表示用户的邮箱地址 | |
is_staff | 创建用户对象时的可选参数,布尔类型,表示用户是否有权限访问后台管理系统 |
is_active | 创建用户对象时的可选参数,布尔类型,表示用户是否已激活 |
is_superuser | 创建用户对象时的可选参数,布尔类型,表示用户是否为超级管理员 |
last_login | 日期时间类型,表示用户最后的登录时间 |
User对象的主要属性:
描述
| |
is_authenticated | 布尔类型,只读的属性,表示当前用户是否已验证 |
is_anonymous | 布尔类型,只读的属性,表示当前用户是否为匿名用户,如果为True,则用户对象的is_authenticated恒为False。 |
User对象的主要方法:
描述
| |
get_username | 获取用户对象的username |
set_password(raw_password) | 设置用户的密码,django会将用户输入的原始密码转为哈希字符串保存至数据库中。raw_password为None时,django不会保存该User对象,并且将用户对象标记为还未设置密码。 |
check_password(raw_password) | 验证该用户的密码是否正确 |
User模型的管理器方法:
描述
| |
create_user(username, email=None,password=None, **extra_fields) | 使用create_user方法创建一个普通账户。 username:必传参数,表示用户的登录名 email:用户的邮件,默认为None password:用户的登录密码,默认为None extra_fields:表示可选的关键字参数 |
create_superuser(username,email, password,**extra_fields) | 使用create_superuser方法创建一个管理员账户 username:必传参数表示管理员的登录名 email:必传参数,表示管理员的邮件 password:必传参数,表示管理员的登录密码 extra_fields:表示可选的关键字参数 |
9.1.3 使用User模型实现用户注册
实现用户注册,需要在站点中提供一个供用户注册的入口,这意味着我们要用模板实现一个注册页面,定义一个用户注册的视图,以及配置注册页面的url与视图的路由。现在请同学们按照以下步骤进行操作:
(1) 进入django项目中的模板目录,创建register.html文件,代码如下:
{# url方法后面的参数,是在urls.py中所定义的url的name #} <form action="{% url 'register' %}" method = 'post'> {# 在form表单中加上如下一行代码,可以防范CSRF攻击 #} {% csrf_token %} <div> <input type="text" name="username" placeholder="请输入注册账号"> </div> <div> <input type="password" name="password" placeholder="请输入注册密码"> </div> <div> <input type="password" name="password_" placeholder="请再次输入密码"> </div> <div> <input type="text" name="email" placeholder="请输入邮件地址"> </div> <div> <input type="submit" value = "注册"/> </div> <p>{{prompt}}</p> </form>
(2) 定义对用户的注册进行处理的视图
打开django应用目录下的views.py,定义Register视图,代码如下:
# 导出User模型 from django.contrib.auth.models import User # 定义Register视图 class Register(View): def post(self, request): """ 通过查询form表单中的name,可以获取用户在表单中的输入值 """ username = request.POST.get('username', '') password = request.POST.get('password', '') password_ = request.POST.get('password_', '') email = request.POST.get('email', '') prompt = "用户注册成功" if not username or not password or password !=password_: prompt = "用户的登录账号或密码非法" else: # 使用User模型的管理器方法来进行用户对象的创建 user = User.objects.create_user(username, email, password) user.save() return render(request, "blog/register.html",{"prompt": prompt}) def get(self, request): # 如果为get请求,则直接对注册页面进行渲染 return render(request, "register.html")
(3) 配置注册页面的url与Register视图的路由
定义注册页面的url为/register/, urls.py更新后的代码如下:
urlpatterns = [ # 配置注册页与视图的路由,设置别名为register path('register/', blog.Register.as_view(), name="register"), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
(4) 在浏览器中进行测试
启动django服务器后,在浏览器中输入http://127.0.0.1:8080/register/:
在页面中输入账号名、密码、邮件地址,然后点击注册。若注册成功,页面会显示用户注册成功的提示信息:
(5) 进入后台管理系统,查看已注册的用户
在后台管理系统中查看已注册的用户,需要先在admin.py注册User模型。进入后台管理系统,点击“认证和授权”下方的用户链接, 在用户的列表页中新增了一个名为Lohan的用户。点击用户列表页中的数据对象,可跳转至用户信息的修改页,在修改页中可以对用户的基本信息,权限等进行修改。
9.1.4 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4) Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料: