登錄接口實現
1. 建立用戶模型 :UserProfile
1 from django.db import models 2 from django.contrib.auth.models import AbstractUser 3 4 # 繼承AbstractUser, 然后增加需要的字段名 5 class UserProfile(AbstractUser): 6 class Meta:
# 自定義表名稱 7 db_table = 'user' 8 verbose_name_plural = verbose_name = '用戶' 9 10 sex = ( 11 ('male', '男'), 12 ('female', '女') 13 ) 14 nick_name = models.CharField(max_length=30, null=True, verbose_name='昵稱', help_text='昵稱') 15 mobile = models.CharField(max_length=11, verbose_name='電話', help_text='電話') 16 last_login = models.DateTimeField(null=True)
PS: 如果感覺自帶的字段有多余的,可以進入源碼文件,注釋不需要的字段。
2. 數據庫遷移:python manage.py migrate
3. 安裝rest_framework_jwt:pip install rest_framework_jwt
4. 配置到我們的項目里面:settings.py
5. 路由配置:urls.py
1 from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token 2 from django.urls import path, include 3 from django.contrib import admin 4 5 urlpatterns = [ 6 path('admin/', admin.site.urls), 7 path('api-auth/', include('rest_framework.urls')), 8 path('api/login/', obtain_jwt_token, name='token_obtain_pair'), # jwt 登錄接口 9 path('api/token/refresh/', refresh_jwt_token, name='token_refresh'), # jwt 刷新token接口 10 ]
6. 訪問登錄接口地址:http://localhost:8000/api/login
7. 使用 user 表中的用戶信息post請求接口,查看返回信息。
JWT 返回信息格式自定義
1. 新建一個存放公共模塊的文件:utils.py
2. 在文件中定義一個方法:jwt_response_payload_handler
1 def jwt_response_payload_handler(token, user=None, request=None): 2 """ 3 自定義jwt認證成功返回數據 4 :token 返回的jwt 5 :user 當前登錄的用戶信息[對象] 6 :request 當前本次客戶端提交過來的數據 7 """ 8 return { 9 'code': 0, 10 'msg': '成功', 11 'data': { 12 'id': user.id, 13 'username': user.username, 14 'token': token, 15 } 16 }
3. 修改配置:settings.py
# 錯誤返回信息自定義可以查看:https://blog.csdn.net/pengyuyan2_1/article/details/103297753