当前位置: 首页> 房产> 建筑 > 深圳网站建设服务哪一个便宜_免费网络电话无限打_查询网138网站域名_百度信息流广告位置

深圳网站建设服务哪一个便宜_免费网络电话无限打_查询网138网站域名_百度信息流广告位置

时间:2025/7/12 18:13:49来源:https://blog.csdn.net/zsb706496992/article/details/146818079 浏览次数:0次
深圳网站建设服务哪一个便宜_免费网络电话无限打_查询网138网站域名_百度信息流广告位置

1、修改serializer.py,增加自定义类

# 自定义用户登录token等返回信息

class MyTokenObtainPair(TokenObtainPairView):

    def post(self, request, *args, **kwargs):

        serializer = self.get_serializer(data=request.data)

        try:

            serializer.is_valid(raise_exception=True)

        except TokenError as e:

            raise InvalidToken(e.args[0])

        # 获取所有值

        result = serializer.validated_data

        result["email"] = serializer.user.email

        result["username"] = serializer.user.username

        result["id"] = serializer.user.id

        # 重写token名字

        result["token"] = result.pop("access")

        return Response(result, status=status.HTTP_200_OK)

完整代码:

from django.shortcuts import render, HttpResponse
from rest_framework.views import APIViewfrom .models import Linkfrom rest_framework import serializers, status
from rest_framework.response import Response
from rest_framework_simplejwt.exceptions import TokenError, InvalidToken
from rest_framework_simplejwt.views import TokenObtainPairView# 和模型直接耦合,确定不灵活,上面的是自己写
class LinkSerializer(serializers.ModelSerializer):# 自定义接口字段名称source="name"是真实的,mingzi是解耦的名称mingzi = serializers.CharField(max_length=300, source="name")class Meta:# 指定关联哪个模型集model = Link# fields = "__all__"# 排除去掉哪些字段exclude = ["gid", "name"]# 自定义用户登录token等返回信息
class MyTokenObtainPair(TokenObtainPairView):def post(self, request, *args, **kwargs):serializer = self.get_serializer(data=request.data)try:serializer.is_valid(raise_exception=True)except TokenError as e:raise InvalidToken(e.args[0])# 获取所有值result = serializer.validated_dataresult["email"] = serializer.user.emailresult["username"] = serializer.user.usernameresult["id"] = serializer.user.id# 重写token名字result["token"] = result.pop("access")return Response(result, status=status.HTTP_200_OK)

2、修改api模块中的urls.py

    # 登录

    # path("token/", TokenObtainPairView.as_view(), name="token_obtain_pair"),

    path("token/", serializer.MyTokenObtainPair.as_view(), name="token_obtain_pair"),

完整代码

from django.urls import path, re_path
from . import viewsfrom . import serializerfrom rest_framework import routers
from rest_framework_simplejwt.views import (TokenObtainPairView,TokenRefreshView,TokenVerifyView,TokenBlacklistView,
)routers = routers.DefaultRouter()
routers.register("linkapi", views.Linkapi)app_name = "api"
urlpatterns = [# 登录# path("token/", TokenObtainPairView.as_view(), name="token_obtain_pair"),path("token/", serializer.MyTokenObtainPair.as_view(), name="token_obtain_pair"),# 刷新path("token/refresh/", TokenRefreshView.as_view(), name="token_refresh"),# 校验path("token/verify/", TokenVerifyView.as_view(), name="token_verify"),# 黑名单path("token/blacklist/", TokenBlacklistView.as_view(), name="token_blacklist"),
]urlpatterns += routers.urls

3、基于上一节的代码,其他代码不变 

4、测试

 

 

关键字:深圳网站建设服务哪一个便宜_免费网络电话无限打_查询网138网站域名_百度信息流广告位置

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: