Django入门教程

前言

第一章: django快速入门

第二章: django MTV架构

第三章: django视图

第四章: django模板

第五章: django模型

第六章: django后台管理系统

第七章: 项目实战-简易的博客系统

第八章:django表单

第九章:django用户认证系统

第十章:django中的会话

第十一章:django安全

第十二章:django性能优化

第十三章:django实用工具

首页 > Django入门教程 > 第九章:django用户认证系统 > 9.1节: django内置的用户模型

9.1节: django内置的用户模型

薯条老师 2020-09-28 09:02:44 258485 0

编辑 收藏

广州番禺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会将用户输入的原始密码转为哈希字符串保存至数据库中。

email

创建用户对象时的可选参数,表示用户的邮箱地址

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/:

image.png

在页面中输入账号名、密码、邮件地址,然后点击注册。若注册成功,页面会显示用户注册成功的提示信息:

image.png 

(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学习资料:


欢迎 发表评论: