说明
接上篇:DjangoRestFramework中的simplejwt使用
为使客户端请求 Token 同时返回登录账户基本信息,作如下处理。
1. 创建 Serializer 文件
命名为 login_seri.py
,代码如下,继承自 Simplejwt 包的类。
from rest_framework_simplejwt.serializers import *
class TokenObtainPairSerializer(TokenObtainSerializer):
@classmethod
def get_token(cls, user):
return RefreshToken.for_user(user)
def validate(self, attrs):
data = super().validate(attrs)
refresh = self.get_token(self.user)
cUser = User.objects.get(username=self.user)
data['username'] = cUser.username
data['mobile'] = cUser.mobile
data['email'] = cUser.email
data['is_admin'] = cUser.is_admin
data['last_login'] = cUser.last_login
if api_settings.UPDATE_LAST_LOGIN:
update_last_login(None, self.user)
return data
2. 创建 Views 文件
命令为 login.py
from rest_framework_simplejwt.views import *
from UserManagement.serializers import login_seri
class TokenObtainPairViewUM(TokenViewBase):
"""
Takes a set of user credentials and returns an access and refresh JSON web
token pair to prove the authentication of those credentials.
"""
serializer_class = login_seri.TokenObtainPairSerializer
token_obtain_pair = TokenObtainPairViewUM.as_view()
3. 配置 urls.py
from UserManagement.views.login import TokenObtainPairViewUM
urlpatterns = [
path("api/token/", TokenObtainPairViewUM.as_view(), name="token_obtain_pair"),
]
4. 测试
执行运行命令
E:\SweetYaya\MyProj01> python manage.py runserver
获取Token
打开 Postman 工具,设置如下
- 选择
post
方式 - 填写请求地址:http://127.0.0.1:8000/api/token/
- 添加头信息
Content-Type: application/json
.
.
.
.
.
.
桃花仙人种桃树,又摘桃花换酒钱_