Django 密码重置 - DoesNotExist 异常

2 投票
1 回答
1102 浏览
提问于 2025-04-16 18:28

我在Django网站的密码重置页面上,输入邮箱地址并点击按钮后,出现了一个DoesNotExist的错误。

为了实现密码重置功能,需要在主项目的urls.py文件中设置四个网址,具体如下:

(r'^password_reset/$', 'appname.views.cust_password_reset'),
(r'^password_reset/done/', 'appname.views.cust_password_reset_done'),
(r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'appname.views.cust_password_reset_confirm'),
(r'^reset/done/$', 'appname.views.cust_password_reset_complete')

以下是与这些网址相关的代码:

def cust_password_reset(request):
    return password_reset(request, post_reset_redirect='password_reset/done',template_name='registration/password_reset_done.html')

def cust_password_reset_done(request):
    return password_reset_done(request,  template_name='registration/password_reset_done.html')

def cust_password_reset_confirm(request, uidb36=None, token=None):
    return password_reset_confirm(request, uidb36=uidb36, token=token,
    template_name='registration/password_reset_confirm.html',
    post_reset_redirect='registration/reset/done/')

def cust_password_reset_complete(request):
    return password_reset_complete(request,
    template_name='registration/password_reset_complete.html')

邮箱地址的有效性检查是正确的,但在重定向到password_reset/done时似乎没有成功。网址仍然显示为password_reset,但却出现了一个DoesNotExist的错误,提示'没有匹配的站点查询'。

这些网址和模板看起来都正常,当我手动访问password_reset/done时,它能正确显示。
这些模板是原始Django模板的完全复制,只是添加了一个头部和底部。没有使用自定义视图/模板进行密码重置时,也会出现同样的错误。

如果有人能提供一些可能导致这个问题的想法,我将非常感激。

1 个回答

2

这个错误“找不到匹配的站点查询”意思是你在settings.py文件里设置的和数据库里实际存在的对象不匹配。你需要检查一下你的网站的属性,确保它和是一样的。

撰写回答