关于django:为什么我们在app目录中创建polls / urls.py模块,即使我们可以在项目的mysite / urls.py中完成整个事情?

why we create polls/urls.py module in app directory even we can do the whole thing in project's mysite/urls.py?

在我的投票/urls.py中的以下代码

从django.urls导入路径从。导入视图

1
2
3
4
5
6
7
8
urlpatterns = [
path('', views.index),   # name='whatever_name'

path('<int:question_id>/', views.detail, name='detail'),

path('<int:question_id>/results', views.results, name='result'),

path('<int:question_id>/vote', views.vote, name= 'vote'),

]

然后我删除了文件,并在mysite/urls.py中添加了所有内容,mysite/urls.py是根urls模块,它工作正常。

1
2
3
4
5
6
7
8
9
10
from django.contrib import admin
from django.urls import path,include
from polls import views

urlpatterns = [
path('polls/', views.index, name='index'),
path('polls/<int:question_id>/', views.detail, name='detail'),
path('polls/<int:question_id>/results/', views.results, name='result'),
path('polls/<int:question_id>/vote/', views.vote, name= 'vote'),
path('admin/', admin.site.urls),

]


是的,将URL放在根目录urls.py中的效果非常好。对于具有一个应用程序的简单项目,您可以将URL放在同一个文件中,即项目级别的urls.py文件,但对于具有多个应用程序的大型项目,非常建议您创建独立的应用程序(分离架构)。通过这种方式,您可以更好地管理项目的复杂性,您可以轻松地交换应用程序,最重要的是,您可以非常容易地在其他项目中重用您的应用程序,因为应用程序包含其所有功能(包括URL),甚至更好地,您可以将应用程序作为包共享,以便其他开发人员可以抓住他们。