首页 > 解决方案 > 将 'path('accounts/',include('django.contrib.auth.urls'))' 添加到 django 项目的 urls.py 文件有什么意义?

问题描述

伙计们,我刚刚开始学习 Django,无法'path('accounts/',include('django.contrib.auth.urls'))'在 django 项目的 urls.py 文件中使用。这是我的根urls.py文件:

    urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.HomePage.as_view(),name='home'),
    path('accounts/',include('accounts.urls',namespace='accounts')),
    path('accounts/',include('django.contrib.auth.urls')),
    path('test/',views.TestPage.as_view(),name='test'),
    path('thanks',views.ThanksPage.as_view(),name='thanks'),
    path("posts/", include("posts.urls", namespace="posts")),
    path("groups/",include("groups.urls", namespace="groups")),
    ]

这是我urls.py的帐户应用程序:

    urlpatterns = [
    path('login/',auth_views.LoginView.as_view(template_name='accounts/login.html'), 
    name="login"),
    path('logout/',auth_views.LogoutView.as_view(), name="logout"),
    path('signup/',views.SignUp.as_view(),name='signup'),
    ]

从上面可以看出,accounts 应用程序使用 LoginView 和 LogoutView 来实现登录和注销功能。(注册视图使用 UserCreationForm)。我还删除'path('accounts/',include('django.contrib.auth.urls'))'并尝试运行服务器。显然,一切似乎都运行良好(登录、注销和注册)。那么,通过将其包含在 中,我们到底得到了urls.py什么?

标签: pythondjango

解决方案


好吧,假设您有很多应用程序并且每个应用程序都有一些urls,如果您不使用包含,则应该将所有 url 添加到一个文件中,这将使您的基本urls文件非常混乱,并且您的一些urls可能会相互覆盖。例如,您决定调用一个example 1具有相似 url 路径的视图来example 2查看,但 url 将请求重定向到错误的视图,因此 include 也可以通过某些方式(例如namespacing)隔离 url。另请注意,有时您必须使用 include(例如包括router.urlsDRF)。包括还可以让您更快、更轻松地调试 url。您可以在此处阅读有关 Django 文档中包含的更多信息。


推荐阅读