Django password_reset with appname

gywdnpxw  于 2023-06-25  发布在  Go
关注(0)|答案(2)|浏览(138)

我在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 %}

jdgnovmf

jdgnovmf1#

也许你需要添加模块名来访问它,像这样:

{% url 'users:password_reset_confirm' %}

https://docs.djangoproject.com/en/3.1/topics/http/urls/#reversing-namespaced-urls

hsgswve4

hsgswve42#

我花了一整天才弄明白:我做了所有的事情来解决这个问题,但最终找到了答案
不要在同一app_name url_pattern中写入密码重置、密码重置完成、密码重置确认和密码重置完成
在根项目名url_pattern中写入那些的正确方法

相关问题