当我点击激活链接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。
"activate/complete/"
"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")