如果用户在单击“验证电子邮件”链接之前未登录,则电子邮件验证抛出错误

时间:2020-05-15 09:31:32

标签: django django-allauth

我正在使用具有电子邮件确认功能的allauth。如果我注册了新用户,然后登录(未经验证),然后打开电子邮件并单击链接,则该用户已在数据库中成功通过验证,可以继续使用该网站。

但是,如果我注册了一个新用户,然后注销他们,然后打开电子邮件并单击链接,则该用户已在数据库中成功验证,但是该链接会引发此错误:

NoReverseMatch at /accounts/confirm-email/MzA:1jZWYM:JgeeuPYRC3QnGOPs3L7kzZEFi5M/
Reverse for 'login' not found. 'login' is not a valid view function or pattern name.

因此,基本上,用户必须在单击电子邮件中的链接时已经登录,才能正常工作,但是如果未登录并单击电子邮件中的验证链接,则用户将在db,但会引发错误。

PS-这是使用普通注册(与社交帐户无关)。我还应该提到我确实从allauth git复制了电子邮件视图并将其放入我的代码中,但后来删除了(删除后希望id删除)它会显示在默认位置)

追踪

Traceback (most recent call last):
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\views\generic\base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\allauth\account\views.py", line 301, in post
    return redirect(redirect_url)
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\shortcuts.py", line 41, in redirect
    return redirect_class(resolve_url(to, *args, **kwargs))
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\shortcuts.py", line 131, in resolve_url
    return reverse(to, args=args, kwargs=kwargs)
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\urls\base.py", line 87, in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\urls\resolvers.py", line 677, in _reverse_with_prefix
    raise NoReverseMatch(msg)

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('about/', include('about.urls')),
    path('contact_us/', include('contact_us.urls')),
    path('enrolment/', include('enrolment.urls')),
    path('accounts/', include('allauth.urls')),
    path('profile/', include('users.urls')),
    path('', include('home.urls')),
    path('our_services/', include('our_services.urls')),
]

谢谢。

1 个答案:

答案 0 :(得分:1)

在回溯中遵循以下行:

File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\allauth\account\views.py", line 301, in post

它在django-allauth中导致this line

self._setting("EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL",settings.LOGIN_URL)

我想您在LOGIN_URL中既没有设置EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL也没有设置settings.py

还是找不到它?