django之随笔

AbstractUser

定义用户信息模块的时候,可继承django自带的AbstractUser模块进行自定义用户信息表

  1. 导入:from django.contrib.auth.models import AbstractUser
  2. 在models.py模块中创建自定义用户类,代码如下:
SEX_CHOICES = (
    ('0', '男'),
    ('1', '女'),
)
class UserInfo(AbstractUser):
    cellphone = models.CharField(max_length=11, null=False, verbose_name='手机')
    realname = models.CharField(max_length=50, null=False, verbose_name='姓名')
    uidentity = models.CharField(max_length=18, null=False, verbose_name='身份证')
    address = models.CharField(max_length=150, null=False, verbose_name='地址')
    sex = models.CharField(choices=SEX_CHOICES, default='0', max_length=10, verbose_name='性别') #verbose_name设置管理系统中该字段的名称

    def __str__(self):
        return self.username

    class Meta:
        db_table = 'Users'
        verbose_name = '用户信息表'
        verbose_name_plural = verbose_name

  1. 在settings.py文件中设置自定义模块的位置:
AUTH_USER_MODEL = 'userinfo.Userinfo'

AbstractUser模块自带的字段名

在这里插入图片描述
这些字段名不用我们专门设置便可使用

admin管理

如果需要在后台管理用户信息,则在admin.py文件中进行设置

  1. 导入:from .models import *
  2. 写类(如果不进行高级管理,则可直接略过)
class UsersAdmin(admin.ModelAdmin):
    list_display = ['username']
    fields = ['username', 'password', 'realname']
  1. 注册
    如果不进行第二步,则注册代码如下
admin.site.register(UserInfo)

否则

admin.site.register(UserInfo,UsersAdmin)

authenticate

django框架提供了两个函数方法进行验证和登陆操作,分别是authenticate()和login()

  1. 导入:
from django.contrib import auth
  1. 在views.py中使用,代码如下:
def login_(request):
    if request.method == "POST":
        username = request.POST.get('username', '')
        password = request.POST.get('userpwd', '')
        user = auth.authenticate(username=username, password=password)
        if user is not None and user.is_active:
            auth.login(request, user)
            return redirect('/')
        else:
            return render(request, 'login.html', {'message':"用户名或密码错误"})

authenticate()方法对用户名和密码进行验证,如果用户名和密码正确则返回一个user对象,进行使用login()方法登录操作;否则返回None。
注意:user.is_active是用来判断用户名是否有效
3. 退出使用logout()方法

def logout_(request):
    auth.logout(request)
    return redirect('/')
  1. user.is_authenticated:始终返回True。这是判断用户是否已通过身份验证的一种方式。这并不意味着任何权限,也不会检查用户是否处于活动状态 –它仅表示用户提供了有效的用户名和密码
def register(request):
    if request.user.is_authenticated():
        return redirect('/')
    else:
        return render(request, 'register.html')

make_password

django自带的注册加密方法

  1. 导入:
from django.contrib.auth.hashers import make_password, check_password
  1. 语法:
make_password('要加密的字符串',"",加密方法)
第二个参数写固定的字符串,使每次生成的加密相同
第三个参数为加密方法,有:pbkdf2_sha256
pbkdf2_sha1
bcrypt_sha256
bcrypt
sha1
unsalted_md5
crypt

代码例子如下:

new_user.password = make_password(request.POST.get('userpwd'), "hehe", 'pbkdf2_sha1')

猜你喜欢

转载自blog.csdn.net/weixin_43359547/article/details/83931225