You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何在注册接口同时返回邮箱与Simple-JWT令牌

注册接口返回邮箱+JWT Access Token方案

下面是基于Django和Simple-JWT实现注册成功后直接返回邮箱与访问令牌的完整代码:

1. 用户模型(models.py)

如果用Django默认用户模型,无需改动;自定义模型的话确保继承AbstractUser,示例如下(默认模型):

from django.contrib.auth.models import User

2. 重写注册序列化器(serializers.py)

核心是在创建用户后生成JWT令牌,直接返回所需字段:

from rest_framework import serializers
from django.contrib.auth.models import User
from rest_framework_simplejwt.tokens import AccessToken

class RegisterSerializer(serializers.ModelSerializer):
    password = serializers.CharField(write_only=True, required=True)

    class Meta:
        model = User
        fields = ('username', 'email', 'password')

    def create(self, validated_data):
        # 创建用户实例
        user = User.objects.create_user(
            username=validated_data['username'],
            email=validated_data['email'],
            password=validated_data['password']
        )
        # 生成Access Token
        access_token = AccessToken.for_user(user)
        # 返回包含邮箱和令牌的字典
        return {
            'email': user.email,
            'access_token': str(access_token)
        }

3. 注册视图(views.py)

用CreateAPIView快速实现注册接口:

from rest_framework.generics import CreateAPIView
from .serializers import RegisterSerializer

class RegisterView(CreateAPIView):
    serializer_class = RegisterSerializer

4. URL配置(urls.py)

添加注册路由,同时保留Simple-JWT默认的令牌接口(可选):

from django.urls import path
from .views import RegisterView
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView

urlpatterns = [
    path('register/', RegisterView.as_view(), name='user-register'),
    # 保留默认令牌接口(如需单独获取令牌可保留)
    path('token/', TokenObtainPairView.as_view(), name='token-obtain-pair'),
    path('token/refresh/', TokenRefreshView.as_view(), name='token-refresh'),
]

测试验证

发送POST请求到/register/,请求体JSON:

{
    "username": "newuser",
    "email": "new@example.com",
    "password": "SecurePass123!"
}

成功响应会返回:

{
    "email": "new@example.com",
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzE5MjQwNzY1LCJpYXQiOjE3MTkyNDA0NjUsImp0aSI6Ij...",
}

额外配置说明

确保settings.py中已配置Simple-JWT作为默认认证方式:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}

内容的提问来源于stack exchange,提问作者Bte Deni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:43:29