我正在使用具有电子邮件确认功能的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')),
]
谢谢。
答案 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
?
还是找不到它?