【发布时间】:2012-03-08 13:52:17
【问题描述】:
我正在开发一个包含多个应用程序的 django 项目。每个应用都有自己的一组模型和视图。
每个应用程序是否也应该使用 urls.py 或函数定义自己的 url。在 django 项目中定义应用程序的 url 并将这些 url 与主 urls.py (root url conf) 集成的最佳实践是什么?
【问题讨论】:
标签: django django-urls
我正在开发一个包含多个应用程序的 django 项目。每个应用都有自己的一组模型和视图。
每个应用程序是否也应该使用 urls.py 或函数定义自己的 url。在 django 项目中定义应用程序的 url 并将这些 url 与主 urls.py (root url conf) 集成的最佳实践是什么?
【问题讨论】:
标签: django django-urls
这取决于。如果您使用一个应用程序处理一个小型网站,您可以将所有表达式保存在同一个 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
【讨论】:
patterns 应该替换为 urls 列表,并且字符串开头不需要'myproject'。
如果您的应用要使用自己的 url 模式向用户显示任何内容,它可能应该有自己的 urls.py 文件。所以在你的基本 urls 文件中,你的 urlpatterns 中有一些东西,比如url(r'', include('path.to.app.urls'))。那么您的应用程序的urls.py 文件将具有类似url(r'^$', 'path.to.app.views.view') 的模式。
【讨论】:
urls.py 文件中呢? url(''...只能映射一次,那么一个人如何管理多个应用呢?
如果应用程序大部分是独立的并且在 URL 层次结构中拥有自己的位置是有意义的,那么它应该有自己的 urls.py。但即使它确实存在,它仍然只是项目开发者的指南,除非使用include() 将其移植到项目 URLconf 中。
【讨论】: