我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。

  Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据,使用auth模块来进行用户认证,那么需要使用人家django自带的auth_user表来存储用户的信息数据。

  模块导入:

from django.contrib import auth

  那么有人就有疑问 了,这个auth_user表并不是我们自己在models.py文件中创建的啊,这通过代码怎么操作啊?

  其中一个往auth_user表里面添加数据的命令,可以先多添加几个用户,方便后面操作:

python manage.py createsuperuser  #要通过这个指令来创建用户,因为这个指令会将你的密码加密。

    Django-内置的auth模块

    然后表中就有数据了:这个表里面的数据现在先关注username和password字段就可以了,其他的字段可为空。

    Django-内置的auth模块

user表具有一下字段:

内置的User模型拥有以下的字段:
username: 用户名。150个字符以内。可以包含数字和英文字符,以及_、@、+、.和-字符。不能为空,且必须唯一!
first_name:歪果仁的first_name,在30个字符以内。可以为空。
last_name:歪果仁的last_name,在150个字符以内。可以为空。
email:邮箱。可以为空。
password:密码。经过哈希过后的密码。
#groups:分组。一个用户可以属于多个分组,一个分组可以拥有多个用户。groups这个字段是跟Group的一个多对多的关系。
#user_permissions:权限。一个用户可以拥有多个权限,一个权限可以被多个用户所有用。和Permission属于一种多对多的关系。
is_staff:是否可以进入到admin的站点。代表是否是员工。这个字段如果不使用admin的话,可以自行忽略,不影响使用
is_active:是否是可用的。对于一些想要删除账号的数据,我们设置这个值为False就可以了,而不是真正的从数据库中删除。
is_superuser:是否是超级管理员。如果是超级管理员,那么拥有整个网站的所有权限。
last_login:上次登录的时间。
date_joined:账号创建的时间。

二、认证流程

1、用户注册

auth 提供的两种创建新用户的方法,需要提供必要参数(username、password)等。

普通用户:create_user()

超级管理员:create_superuser()

from django.contrib.auth.models import User
user = User.objects.create_user(username='用户名',password='密码',email='邮箱',...)

user_obj = User.objects.create_superuser(username='用户名',password='密码',email='邮箱',...)

注册代码:

# 注册
def register(request):

    if request.method=="GET":
        return render(request,"register.html")
    else:
        username = request.POST.get("username")
        password = request.POST.get("password")
        # 判断用户名是否存在
        if User.objects.filter(username=username).exists():
            return HttpResponse("用户名已经存在")
        # 注册用户
        User.objects.create_user(username=username,password=password)
        return redirect("user_login")
注册

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-10
  • 2022-12-23
猜你喜欢
  • 2021-09-03
  • 2021-12-18
  • 2022-02-04
  • 2021-05-30
  • 2021-12-28
相关资源
相似解决方案