有没有办法排除/覆盖其中一个URL路径?

时间:2019-01-06 15:52:52

标签: django

我需要排除或覆盖其中包含的网址路径之一。

我已经使用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仍会从库中渲染视图。

0 个答案:

没有答案