23. Диспетчеризация URL.
Немного принципов
- KISS
- DRY
- NIH
- YAGNI
Диспетчеризация урлов
ЧПУ
ЧПУ - (человеко-понятные урлы) - идея формирования “хороших” урлов, которые были бы удобнее, в первую очередь, для человека, а не машины:
- содержат читаемые слова и даты
- латинский алфавит
- показывают вложенность директорий сайта
- отражают название сущности, на которую они ссылаются
- избегаются технические части текста (расширения, спецсимволы)
URLconf
- URL dispatcher - (диспетчеризация урлов, routes, роуты) - способ задания схемы отображения из урла запроса на обработчик запроса.
- URLconf - неформальное название задаваемого разработчиком отображения с помощью встроенного в Django механизма.
- Содержится в файлах urls.py.
- Отображение задаётся с помощью кода на Python, которому указывается простое регулярное выражение (описание урла) и обрабатывающий объект-представление.
- URLConf могут вкладываться один в другой - обычно в корневой URLConfg проекта включаются URLConf дочерних приложений.
Пример:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/([0-9]{4})/$', views.year_archive, name='news-year-archive'), url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ]
Иногда нужно искать url по шаблону (чтобы было проще вносить изменения и меньше повторяться).
Для этого существуют механизмы как в Python коде:
reverse('news-year-archive', args=(year,))
Так и в шаблонах.