项目中的每个 django 应用程序都应该有自己的 urls.py 吗?
Posted
技术标签:
【中文标题】项目中的每个 django 应用程序都应该有自己的 urls.py 吗?【英文标题】:Should every django app within a project have it's own urls.py? 【发布时间】:2012-03-08 13:52:17 【问题描述】:我正在开发一个包含多个应用程序的 django 项目。每个应用都有自己的一组模型和视图。
每个应用程序是否也应该使用 urls.py 或函数定义自己的 url。在 django 项目中定义应用程序的 url 并将这些 url 与主 urls.py (root url conf) 集成的最佳实践是什么?
【问题讨论】:
【参考方案1】:这取决于。如果您使用一个应用程序处理一个小型网站,您可以将所有表达式保存在同一个 urls.py 中。
但是,当您使用真正独立的应用程序处理更复杂的网站时,我更喜欢以下结构:
我的应用程序 admin.py forms.py models.py urls.py views.py manage.py settings.py urls.py不要忘记每个文件夹都需要它自己的 __ init__.py
# urls.py
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Notice the expression does not end in $,
# that happens at the myapp/url.py level
(r'^myapp/', include('myproject.myapp.urls')),
)
# myapp/urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('myproject.myapp.views',
(r'^$', 'default_view',
(r'^something/$', 'something_view',
)
你可能还想看看Class-based Generic Views
【讨论】:
更新到 django 1.9,patterns
应该替换为 url
s 列表,并且字符串开头不需要'myproject'。
我不明白这是如何回答这个问题的。使困惑。它似乎只处理一个应用程序。问题是关于多个应用程序。【参考方案2】:
如果您的应用要使用自己的 url 模式向用户显示任何内容,它可能应该有自己的 urls.py
文件。所以在你的基本 urls 文件中,你的 urlpatterns 中有一些东西,比如url(r'', include('path.to.app.urls'))
。那么您的应用程序的urls.py
文件将具有类似url(r'^$', 'path.to.app.views.view')
的模式。
【讨论】:
但是在您的第二个应用程序的urls.py
文件中呢? url(''...
只能映射一次,那么一个人如何管理多个应用呢?【参考方案3】:
如果应用程序大部分是独立的并且在 URL 层次结构中拥有自己的位置是有意义的,那么它应该有自己的 urls.py。但即使它确实存在,它仍然只是项目开发者的指南,除非使用include()
将其移植到项目 URLconf 中。
【讨论】:
以上是关于项目中的每个 django 应用程序都应该有自己的 urls.py 吗?的主要内容,如果未能解决你的问题,请参考以下文章