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和错误密码不在示范)