Пусть мы только что создали проект project. В нем сделали приложение articles, в котором намереваемся хранить статьи. При этом мы хотим, чтобы при обращении в браузере по адресу http://127.0.0.1:8000/ у нас загружались urls.py этого приложения articles.
Вот главные роуты проекта: project/urls.py:
Здесь видно, что при обращении к http://127.0.0.1:8000/ будет подключаться файл articles/urls.py:
Так нужно организовать url-паттерны, чтобы при обращении к корню сайта у нас загрузились url какого-то приложения.
НО! Не спешите! Поскольку в главном файле urls.py мы поместили url-паттерн в самое начало, у нас не будет доступна админка. Чтобы это исправить, поместите этот паттерн вниз:
Итак, мы получили урок:
в фреймворке Django для реализации своих задумок с конфигурацией url-паттерном нужно поиграть с порядком их следования.
Вот главные роуты проекта: project/urls.py:
# ... начальные настройки urlpatterns = patterns('', # подключаем настройки роутов приложения article url(r'', include('article.urls')), url(r'^admin/doc/', include('django.contrib.admindocs.urls')), url(r'^admin/', include(admin.site.urls)), )
Здесь видно, что при обращении к http://127.0.0.1:8000/ будет подключаться файл articles/urls.py:
# ... urlpatterns = patterns('', url(r'^(?P[a-z]+)$', ArticleListView.as_view(), name='tag_article_list'), url(r'^(?P \d+)$', DetailView.as_view( model=Article, context_object_name='article', template_name='article/article.html'), name='article_detail'), url(r'', ListView.as_view( queryset=Article.objects.order_by('-published'), context_object_name='article_list', template_name='article/article_list.html'), name='article_list'), )
Так нужно организовать url-паттерны, чтобы при обращении к корню сайта у нас загрузились url какого-то приложения.
НО! Не спешите! Поскольку в главном файле urls.py мы поместили url-паттерн в самое начало, у нас не будет доступна админка. Чтобы это исправить, поместите этот паттерн вниз:
# ... начальные настройки urlpatterns = patterns('', url(r'^admin/doc/', include('django.contrib.admindocs.urls')), url(r'^admin/', include(admin.site.urls)), # Паттерн охватывает все варианты роутов, поэтому его нужно поместить вниз, # чтобы дать шанс отработать тем паттернам, что расположены выше. url(r'', include('article.urls')), )
Итак, мы получили урок:
в фреймворке Django для реализации своих задумок с конфигурацией url-паттерном нужно поиграть с порядком их следования.