我正在开发一个包含多个应用程序的django项目。每个应用程序都有自己的一组模型和视图。
每个应用程序是否也应该使用urls.py或函数定义自己的url。在django项目中定义应用程序网址的最佳做法是什么,并将这些网址与主要urls.py(root url conf)集成在一起?
答案 0 :(得分:27)
这取决于。如果您正在使用一个应用程序处理一个小网站,您可以将所有表达式保留在相同的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',
)
答案 1 :(得分:6)
如果应用程序主要是自包含的并且在URL层次结构中有自己的位置是有意义的,那么它应该有自己的urls.py.但即使它确实存在,它仍然只是项目开发人员的指南,除非使用include()
将其移植到项目URLconf中。
答案 2 :(得分:5)
如果您的应用程序要使用自己的url模式向用户显示任何内容,则应该有自己的urls.py
文件。因此,在您的基本网址文件中,您的网址包含url(r'', include('path.to.app.urls'))
等内容。然后,您应用的urls.py
文件将采用类似url(r'^$', 'path.to.app.views.view')
的模式。