将 'path('accounts/',include

各位,我刚刚开始学习 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'),

    ]

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


跃然一笑
浏览 135回答 2
2回答

慕运维8079593

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

犯罪嫌疑人X

这些 Django.contrib.auth.url 本身就是 url。这意味着当您包含它们时,它会自动包含一些内置的 django url,例如登录、注册、密码重置、密码重置确认等。如果您不想自己编码,这意味着创建您的自己的看法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python