Django登录注册

1.创建app

django-admin startapp login

注册app,INSTALLED_APPS里边加入login

2.设计表结构

from django.db import models
from django.contrib.auth.models import AbstractUser


# Create your models here.


class User(AbstractUser):
    mobile = models.CharField(max_length=11, unique=True, verbose_name='手机号')

    class Meta:
        db_table = 'tb_users'
        verbose_name = '用户'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username


进行迁移

python manage.py makemigrations

python manage.py migrate

3.注册、手机号或账号登录视图


class Register(APIView):
    def post(self, request):
        # 获取前端传来的userName,pwassword,mobile
        name = request.data.get("username")
        pwd = request.data.get('password')
        mobile = request.data.get('mobile')
        # 校验
        if not all([name, pwd, mobile]):
            # 失败
            return Response({"msg": '请输入用户名或密码', "code": '400'})
        else:
            num = User.objects.filter(mobile=mobile).count()
            if num > 0:
                return Response({'msg': '手机号已被注册', "code": '400'})
            # 成功校验
            else:
                # 加密写入数据库
                user = User.objects.create_user(username=name, password=pwd, mobile=mobile)
            return Response({"msg": '注册成功', "code": '200', "user": user.username})


# 登录
class Login(APIView):
    def post(self, request):
        # 获取前端传来的数据
        username = request.data.get('username')
        pwd = request.data.get("password")
        # user = authenticate(username, password)
        print('获取', pwd, username)
        # 进行密码校验
        # 1. 校验用户名是否在数据库
        try:
            user = User.objects.get(Q(username=username) | Q(mobile=username))
        except Exception as e:
            return Response({"msg": "用户不存在!", "code": "400"})
        if check_password(pwd, user.password):
            # 校验成功
            payload = jwt_payload_handler(user)
            token = jwt_encode_handler(payload)
            # print('++++++++++', token)
            return Response({"msg": "登录成功", "code": "200", 'token': token, "user": {"username": user.username}})
        else:
            return Response({"msg": "用户名和密码不一致!"})

4.配置相关路由

urlpatterns = [
    path('register/', views.Register.as_view()),
    path('login/', views.Login.as_view()),
]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值