DjangoRF-实在-3-用户登录

1、用户登录接口users/login/

写model==》写serializers==》views==》配urls.
1、在users下创建serializers.py

from rest_framework import serializers
from rest_framework.validators import UniqueValidator
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer, TokenRefreshSerializer
from rest_framework.exceptions import AuthenticationFailed
from apps.users.models import User
# from users import models #不知道为啥不行
# from users.models import User #不知道为啥不行


class MyTokenObtainPairSerializer(TokenObtainPairSerializer):

    def validate(self, attrs):
        try:
            data = super().validate(attrs)
        except AuthenticationFailed:
            raise AuthenticationFailed("用户密码错误")
        data['token'] = data.pop("access")
        return data


class MyTokenRefreshSerializer(TokenRefreshSerializer):

    def validate(self, attrs):
        data = super().validate(attrs)
        data['token'] = data.pop("access")
        return data

2、写view

# from django.shortcuts import render

# Create your views here.
from rest_framework.generics import CreateAPIView
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
from rest_framework import viewsets, generics
from users.serializers import \
    MyTokenRefreshSerializer, MyTokenObtainPairSerializer


from apps.users.models import User


# from utils.permissions import OnlySuperUser


class LoginView(TokenObtainPairView):
    """
    denglu View
    """
    serializer_class = MyTokenObtainPairSerializer


class MyTokenRefreshView(TokenRefreshView):
    """
    token 刷新视图
    """
    serializer_class = MyTokenRefreshSerializer

3、users创建urls.py,

from django.urls import path
from . import views

urlpatterns = [
    path('users/login/', views.LoginView.as_view(), name='login'),
    path('users/token/refresh/', views.MyTokenRefreshView.as_view(), name='refresh')
]

4根目录下urls.py配置

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('users.urls')),
]

5、simple-jwt配置在dev_settings.py

# jwt配置
SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(days=1),  # token过期时间
    'REFRESH_TOKEN_LIFETIME': timedelta(days=1),  # 刷新token过期时间
}

在这里插入图片描述

2、前后端登录联调

在这里插入图片描述

3|在终端创建超管账号,或者进行数据库操作。

没有提示。创建超管
在这里插入图片描述
创建普通员工
在这里插入图片描述
安装pip install ipython即可
在这里插入图片描述
查看数据库,有刚创建的超管账号。
用超管进行登录。(其他url和错误密码不在示范)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值