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

如何在Django中不创建用户模型和登录体系的情况下生成随机uid和token

无用户模型实现用户激活的操作方案

现有代码问题修正

  • 首先修正视图请求发送逻辑:你当前代码中调用request.post()是错误用法,request为Django传入的当前请求对象,不具备发送外部POST请求的能力,若需调用其他接口需安装并导入requests库,使用requests.post()发起请求。
  • 路由冲突问题:你配置的自定义激活路由和Djoser自带的激活接口路径完全一致,会导致请求匹配混乱,建议修改自定义视图的路由前缀避免冲突。

随机uid、token生成逻辑

无需依赖用户模型即可生成符合格式要求的参数,示例代码如下:

import uuid
import secrets

# 生成符合URL规则的随机uid,格式适配Djoser要求
def generate_random_uid():
    return str(uuid.uuid4()).replace("-", "")[:20]

# 生成符合字符规则的随机激活token
def generate_random_token():
    return secrets.token_urlsafe(20)

调整后的完整实现代码

视图代码

如果你不需要实际校验用户是否存在,可直接在自定义视图返回激活成功,无需转发请求到Djoser接口:

from rest_framework.views import APIView
from rest_framework.response import Response

class ActivateUser(APIView):
    def get(self, request, uid, token, format = None):
        payload = {'uid': uid, 'token': token}
        print("payload : " , payload)
        # 无需用户校验时直接返回204激活成功状态
        return Response({}, status=204)

路由配置

修改路由避免和Djoser默认路径冲突:

re_path('activate/(?P<uid>[\w-]+)/(?P<token>[\w-]+)/',ActivateUser.as_view())

settings.py配置

保持激活URL和路由匹配即可:

DJOSER = {
    'ACTIVATION_URL': 'activate/{uid}/{token}/',
    # 不需要发送激活邮件可添加下面配置
    # 'SEND_ACTIVATION_EMAIL': False
}

内容的提问来源于stack exchange,提问作者Shweta Shinde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:18:04