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

如何修复Django邮箱验证URL的正则表达式匹配问题

问题核心原因

你发送的邮箱验证链接是通过查询参数(?token=xxx)传递token,但你的Django路由规则定义的是路径参数(要求token放在verify_email/之后),两者不匹配,因此触发404错误。

两种修复方案

任选其一即可解决问题:

方案一:修改路由适配查询参数

调整api.urls.py的路由规则,让它接收查询参数形式的token,无需在路径中捕获:

# api.urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('verify_email/', views.verify_email, name="verify_email"),
]

然后在verify_email视图中通过request.GET获取token:

def verify_email(request):
    token = request.GET.get('token')
    # 此处编写邮箱验证逻辑

方案二:修改邮件链接适配路径参数

保持现有路由规则不变,调整生成验证链接的代码,把token嵌入路径而非作为查询参数。可以用Django的reverse函数生成标准URL:

from django.urls import reverse

# 生成验证链接示例
token = "ddfddjrf....fddkfjdjh"
# 根据路由名称和参数生成相对路径
verify_path = reverse('verify_email', kwargs={'token': token})
# 拼接成完整链接
full_verify_url = f"https://my_domain.com{verify_path}"

生成的链接会变成https://my_domain.com/api/verify_email/ddfddjrf....fddkfjdjh/,完全匹配你的现有路由规则。

额外语法修正

你提供的api.urls.py存在语法错误:列表闭合符号写成了[,应该改为],修正后代码如下:

# api.urls.py
from django.urls import re_path
from . import views

urlpatterns = [
   re_path(r'^verify_email/(?P<token>[\w.-]+)/', views.verify_email, name="verify_email"),
]

内容的提问来源于stack exchange,提问作者Axel Siebert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:22:47