django注册无效激活密钥错误,但用户帐户被激活



当我点击激活链接http://127.0.0.1:8000/core/auth/activate/aoisdoaisdoaisdoiaj/时我被带到一个activation_failed页面,上面写着-The activation key you provided is invalid。但我在数据库中的帐户也被激活了。

如果账户被激活意味着激活成功,那么为什么django注册会重定向到失败的页面?感谢

django registration/backends/activation/urls.py中有两个url会造成复杂情况,这对于像我这样的django新手来说很难理解:让我们按照下面显示的顺序将它们称为url1和url2。

  1. "activate/complete/"
  2. "activate/<str:activation_key>/"

它们在原始urls.py中按策略排序。但由于我覆盖了ActivationView类,我不得不覆盖url2"activate/<str:activation_key>/"。这改变了最初的顺序,django开始在url1之前查找url2。正如您所看到的,任何格式为/activate/xyz/的url都可以作为url2。因此,在url2中/activate/complete/也称为view。

解决方案:将url1的名称更改为类似activation/complete/的名称,这样就可以正常工作

这使得

您被重定向到activation/complete/,您的自定义激活URL正在捕获此URL。要恢复内置行为,请在自定义激活URL上方添加一个URL模式,如下所示:

path("activate/complete/", 
TemplateView.as_view(template_name="django_registration/activation_complete.html"),
name="django_registration_activation_complete")

最新更新