Django Book: URLconf и "слабые связи"

Автор: | 05/02/2015
 

django_logo_2Предыдущая статья.

Сейчас хороший момент, что бы подчеркнуть ключевой момент философии URLconfs и Django: понятие “слабые связи” (loose coupling). Проще говоря, “слабые связи“, или “слабосвязанность” – это подход в программировании, при котором особое значение имеет независимость компонентов друг от друга – т.е. наличие “слабых связей” между ними. Если две части кода “слабосвязаны” – то изменения в одной части не повлияют на работу другой части.

URLconf в Django является хорошим примером такого похода. В Django приложениях определение URL-я и функция представления, которые вызываются этими URL-ами имеют как раз такую “слабую связь”. Т.е. – определение того, какой URL будет связан с определённой функций, и реализациея самой функции являются двумя мало зависимыми вещами. Это даёт вам возможность изменять одну часть без влияния на другую.

Возьмём для примера наше представление current_datetime. Если мы хотим изменить URL приложения, допустим – изменить /time/ на /current-time/ – нам достаточно внести небольшое изменение в URLconf, не заботясь о самом представлении. Так же верно и обратное – если мы хотим изменить функцию представления, изменив логику её работы, мы можем это сделать без изменения URL, к которой подключена эта функция.

Кроме того, если мы хотим добавить функциональность времени-даты на несколько URL-ов – нам достаточно изменить URLconf, без редактирования кода представления.

Вот несколько надуманный пример, но идея, заложенная в нём, может вам пригодиться:

from django.conf.urls.defaults import patterns, include, url
from example.views import hello, current_datetime

urlpatterns = patterns('',
    url(r'^$', hello),
    url(r'^hello/$', hello),
    url(r'^time/$', current_datetime),
    url(r'^another-time-page/$', current_datetime),
)

Таким образом, URLconf  и представления являются наглядным примером слабых связей. Мы будем обращать ваше внимание на примеры важности этой философии далее в нашей книге.

Продолжение в статье Django Book: третье представление – динамические URL-ы.