我在django中使用auth视图来重置密码。由于我已经在我的用户应用程序中声明了这个视图,并使用appname作为URL,所以我得到了一个错误。我知道我应该在django预建模板中更改URL,但我不知道覆盖这种东西的最佳方法。
这是URL.py我的用户应用程序的www.example.com:
app_name = 'users'
urlpatterns = [
path('register/', views.register, name='register'),
path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
path('password-reset/',
auth_views.PasswordResetView.as_view(
template_name='users/password_reset.html'
),
name='password_reset'),
path('password-reset/done/',
auth_views.PasswordResetDoneView.as_view(
template_name='users/password_reset_done.html'
),
name='password_reset_done'),
path('password-reset-confirm/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(
template_name='users/password_reset_confirm.html'
),
name='password_reset_confirm'),
path('password-reset-complete/',
auth_views.PasswordResetCompleteView.as_view(
template_name='users/password_reset_complete.html'
),
name='password_reset_complete'),]
这就是错误:
NoReverseMatch at /users/password-reset/
Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name.
这是它所指的行:
{{ protocol }://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
2条答案
按热度按时间jdgnovmf1#
也许你需要添加模块名来访问它,像这样:
https://docs.djangoproject.com/en/3.1/topics/http/urls/#reversing-namespaced-urls
hsgswve42#
我花了一整天才弄明白:我做了所有的事情来解决这个问题,但最终找到了答案
不要在同一app_name url_pattern中写入密码重置、密码重置完成、密码重置确认和密码重置完成
在根项目名url_pattern中写入那些的正确方法