【问题标题】:django-registration invalid activation key error but user account gets activateddjango-registration 无效激活密钥错误,但用户帐户被激活
【发布时间】:2020-08-08 16:21:55
【问题描述】:
当我点击激活链接http://127.0.0.1:8000/core/auth/activate/aoisdoaisdoaisdoiaj/
我被带到一个activation_failed 页面,上面写着-The activation key you provided is invalid。
但是我在数据库中的帐户也被激活了。
如果帐户正在激活,则意味着激活成功,那么 django-registration 为什么会重定向到失败的页面?
谢谢
【问题讨论】:
标签:
django
django-registration
【解决方案1】:
您被重定向到activation/complete/,并且您的自定义激活 URL 正在捕获此 URL。要恢复内置行为,请在您的自定义激活 URL 上方添加一个 URL 模式,如下所示:
path("activate/complete/",
TemplateView.as_view(template_name="django_registration/activation_complete.html"),
name="django_registration_activation_complete")
【解决方案2】:
在 django-registration/backends/activation/urls.py 中有 2 个 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。因此 /activate/complete/ 在 url2 中也称为视图。
解决方案:将 url1 的名称更改为 activation/complete/ 之类的名称,一切正常
那个放