django注册注册和激活完成视图NoReverseMatch



[另一个更新:]我解决了这个问题,并在下面发布了一个答案,但如果有人有更清洁的解决方案,那将是受欢迎的!

[更新]:我已经能够通过在自定义MyRegistrationView中指定success_url来解决registration_complete的问题。但这对ActivationView不起作用,它在寻找"django_registration_activate_complete"模式时仍然抛出NoReverseMatch错误。更新后的代码如下。

我正在尝试为我的Web应用程序实现django注册,并且在我的"django_registration_activation_complete"one_answers"django_registration_colete"视图中都出现了NoReverseMatch错误。

当我注册一个新用户时,我没有在点击提交后重定向到我的"registration_complete"视图,而是收到以下NoReverseMatch错误(如下(。带有激活链接的电子邮件会正确发送,当单击激活链接时,用户会被标记为活动并可以登录。但是,单击激活链接会导致类似的NoReverseMatch错误,并且我的"activation_complete"模板不会显示。

我有一个从AbstractUser继承的自定义用户模型,所以我必须创建自己的用户注册表单,但除此之外,我认为django注册快速启动指南中没有遗漏任何内容。

我的模板都在文件夹"C:\Projects\PyDev\group_work\users\templates\django_registration"中,其名称如快速入门指南中所述

这是我的第一个问题,所以如果有什么不清楚或遗漏,请告诉我。

Traceback (most recent call last):
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangocorehandlersexception.py", line 34, in inner
response = get_response(request)
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangocorehandlersbase.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangocorehandlersbase.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangoviewsgenericbase.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjango_registrationviews.py", line 52, in dispatch
return super().dispatch(*args, **kwargs)
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangoviewsgenericbase.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangoviewsgenericedit.py", line 142, in post
return self.form_valid(form)
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjango_registrationviews.py", line 96, in form_valid
return HttpResponseRedirect(self.get_success_url(self.register(form)))
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjango_registrationviews.py", line 93, in get_success_url
return super().get_success_url()
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangoviewsgenericedit.py", line 51, in get_success_url
if not self.success_url:
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangoutilsfunctional.py", line 119, in __wrapper__
res = func(*self.__args, **self.__kw)
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangourlsbase.py", line 87, in reverse
return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "C:ProjectsPyDevgroup_workgw_envlibsite-packagesdjangourlsresolvers.py", line 677, in _reverse_with_prefix
raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'django_registration_complete' not found. 'django_registration_complete' is not a valid view function or pattern name.

urls.py:

urlpatterns = [
path('accounts/register/', RegistrationView.as_view(
form_class=UserRegisterForm),
name = 'django_registration_register',),
path('accounts/activate/(?P<activation_key>w+)/$',
ActivationView.as_view(),
name='django_registration_activate'),
path('accounts/', 
include('django_registration.backends.activation.urls')),
]

在views.py中[编辑](MyActivationView不能解决我的问题(

class MyRegistrationView(RegistrationView):
success_url = reverse_lazy('users:django_registration_register_complete')
class MyActivationView(ActivationView):
success_url = reverse_lazy('login')

[另一个编辑]这也是我在urls.py中尝试过的,但没有成功:

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

我通过将成功url路径添加到我的主urls.py而不是我的应用程序中的路径来解决这个问题:

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

最新更新