rest_framework_simplejwt自定义使用——登录功能
一、使用默认的rest_framework_simplejwt实现登录功能 1.1 创建django空项目 #创建django项目django-admin startproject login# 进入login目录
cd login#创建app
django-admin startapp user#初始化数据库,默认使用SQLit3
python manage.py makemigrations
#创建表结构
python manage.py migrate # 创建超级用户账号,用户名:root,密码:root,邮箱:root@qq.com
python manage.py createsuperuser# 安装rest_framework和rest_framework_simplejwt
pip install rest_framework
pip install rest_framework_simplejwt
1.2 初始化项目
主要修改setting.py文件和login目录下的urls.py文件:
setting.py
INSTALLED_APPS = ['rest_framework', # 新增'rest_framework_simplejwt' # 新增
]REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': [# 设置全局权限模式,用户认证通过可访问'rest_framework.permissions.IsAuthenticated',],'DEFAULT_AUTHENTICATION_CLASSES': [# 使用默认的认证类的认证方式'rest_framework_simplejwt.authentication.JWTAuthentication',
urls.py
from django.urls import path
from rest_framework_simplejwt.views import TokenRefreshView, TokenVerifyView, TokenObtainPairView
urlpatterns = [path("login/", TokenObtainPairView.as_view(), name="token_obtain_pair"),path("refresh/", TokenRefreshView.as_view(), name="token_refresh"),path("verify/", TokenVerifyView.as_view(), name="token_verify"),
]
这三个接口分别是登录、获取新的token、验证token是否有效
TokenObtainPairView.as_view(),这个接口登录成功后会返回:访问令牌和有效令牌。
urls.pypath("test/", TestView.as_view(), name="xx"),
views.py 设置
from rest_framework.views import APIView from rest_framework.response import Response class TestView(APIView):def post(self, request, *args, **kwargs):s = str(request.user.__dict__)data = {'status': s,'message': '的点点滴滴-----Hello, this is the ziapi endpoint!'}return Response(data)