我需要排除或覆盖其中包含的网址路径之一。
我已经使用django.contrib.auth
软件包来实现注册和登录以及密码恢复,但是我决定自己进行密码更改。但是,似乎不太容易覆盖url路径。
这是我的urls.py文件:
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/password_change', views.PasswordChangeView.as_view()),
path('accounts/', include('django.contrib.auth.urls',)),
path("", views.index, name="index"),
]
我认为在包含操作之前将path('accounts/password_change', views.PasswordChangeView.as_view()),
行包括在内可以解决该问题,但是似乎模式匹配功能首先遍历包含的URL,然后才检查剩余的URL。
有解决这个问题的优雅方法吗?
为了向您展示我的问题所在,我添加了另一个虚拟网址:accounts/change
,该网址不在django.contrib.auth.urls
下。如注释中所述,我还在库包含之后添加了相同的URL。
urlpatterns = [
path('accounts/password_change', views.PasswordChangeView.as_view()),
path('accounts/change', views.PasswordChangeView.as_view()),
path('accounts/', include('django.contrib.auth.urls', )),
path('accounts/password_change', views.PasswordChangeView.as_view()),
path("", views.index, name="index"),
]
现在,访问/accounts/change
会触发正确的视图,但是/accounts/password_change
仍会从库中渲染视图。