Подтвердить что ты не робот

Должно ли каждое приложение django в проекте иметь собственный urls.py?

Я работаю над проектом django, который будет содержать несколько приложений. Каждое приложение будет иметь свой собственный набор моделей и представлений.

Если каждое приложение также определяет собственный URL-адрес с urls.py или, возможно, функцией. Какова наилучшая практика для определения URL-адресов приложений в проекте django и интеграции этих URL-адресов с основным urls.py(root url conf)?

4b9b3361

Ответ 1

Это зависит. Если вы имеете дело с крошечным веб-сайтом с одним приложением, вы можете сохранить все выражения в том же urls.py.

Однако, когда вы имеете дело с более сложным сайтом с действительно отдельными приложениями, я предпочитаю следующую структуру:

  • MyApp
    • 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',
)

Вы также можете посмотреть Общие представления на основе классов

Ответ 2

Если приложение в основном самодостаточно и имеет свое место в иерархии URL-адресов, имеет смысл, то оно должно иметь свой собственный urls.py. Но даже если он существует, он все еще является лишь ориентиром для разработчика проекта, если include() не используется, чтобы перевести его в URL-адрес проекта.

Ответ 3

Если ваше приложение будет отображать что-либо пользователю с его собственным шаблоном url, у него должен быть собственный файл urls.py. Таким образом, в вашем базовом файле urls у вас будет что-то в ваших URL-адресах, например url(r'', include('path.to.app.urls')). Тогда ваш файл приложения urls.py будет иметь такой шаблон, как url(r'^$', 'path.to.app.views.view').