xadmin使用(二)用户登陆

1,创建static存放静态文件

在这里插入图片描述

2,创建用户模型类继承 AbstractUser

# 用户模型类
class UserProfile(AbstractUser):
    # 这个字段在后台是可以下拉的选项
    gender_choices = (
        ('male', '男'),
        ('female', '女'),
    )
    nick_name = models.CharField('昵称', max_length=50, default='')
    birthday = models.DateField('生日', null=True, blank=True)
    gender = models.CharField('性别', max_length=12, choices=gender_choices, default='female')
    adress = models.CharField('地址', max_length=100, default='')
    mobile = models.CharField('手机号', max_length=11, null=True, blank=True)

    # Django 模型中的verbose_name我们常常可能需要使用。
    # 比如将数据库里面的数据导出成csv文件,那么csv文件的表头的名字可以通过取每个字段的verbose_name来获取,
    # 数据可以通过queryset语句来获取。 这样制作出来的csv表就能想数据库一样,字段名和字段值一一对应了。
    class Meta:
        verbose_name = '用户信息'
        verbose_name_plural = verbose_name

    def __str__(self):
        # AbstractUser这个类里面有 username这个属性
        return self.username


'''
为什么要继承AbstractUser这个类来做user呢,这个类在django里面已经注册过了,
系统已经自带了很多属性,上面使我们主动添加的属性,等下看数据库就知道了
'''

在setting.py中重载这个user

# 重载
AUTH_USER_MODEL = "users.UserProfile"

执行迁移文件命令后查看数据库
在这里插入图片描述
在这里插入图片描述

我们可以看到数据库中创建的表是xadmin的,而且这个用户表很多字段不是我们创建,是因为我们呢继承了 AbstractUser

定义一个注册的页面

<!DOCTYPE html>
<html lang="en">
{% load staticfiles %}
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
注册<br>
<form action="{% url 'register' %}" method="post">
    用户名 <input type="text" name="username" value=""><br>
    密码   <input type="text" name="password" value=""><br>
    <input type="submit" value="注册"><br>
    {{ msg }}
    {% csrf_token %}
</form>
</body>
</html>

msg 是注册弹出来的信息,输入是否合理,是否注册成功

url

    path('register/', RegisterView.as_view(), name="register"),

view视图

class RegisterView(View):
    def get(self,request):
        return render(request,'register.html',{})
    def post(self, request):
        register_form = RegisterForm(request.POST)
        if register_form.is_valid():
            username = request.POST.get("username")
            password = request.POST.get("password")
            if UserProfile.objects.filter(username=username):
                return render(request,'register.html', {'msg':"用户已经存在"})
            else:
                user = UserProfile()
                user.username = username
                user.password = make_password(password)
                user.is_active= False
                user.save()
                return  render(request, 'register.html', {"msg":"注册成功"})
        else:
            return render(request, 'register.html', {"msg": "输入不正确"})

注意这里的make_password 是调用from django.contrib.auth.hashers import make_password包下的方法,不至于让密码很明显的看到,这样一来,在数据库里面也看不到密码信息,其次这里的RegisterForm是对输入的内容进行校验,是否满足相关要求,这里就这几道app下面的一个forms.py文件下的内容了,没有的话创建一个

class RegisterForm(forms.Form):
    # 给注册的输入框设置格式
    username = forms.CharField(required=True)
    password = forms.CharField(required=True,min_length=5)
    # 也就是说,username和password不能为空 required就是这个意思,其次 密码最小是5位,如果不满足此要求会有提示信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

从上面的截图我们可以看到,只有当输入是合理的时候才会注册成功,这里所谓的合理就是RegisterForm里面来决定的

查看数据库

在这里插入图片描述
我们可以看到. 这里已经把刚才的数据库存进去了,并且是不会显示密码的,但是密码就在数据库里面

更多内容请看下一篇播客…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值