Сравнительно недавно поймал себя на мысли, что когда пишу код джанговских шаблонов, то у меня и html и шаблонные теги живут в голове в одном контексте. Т.е. мне долго пришлось себя перебарывать чтобы написать это:
<tr>
{% cache ... %}
<td>
...
</td>
<td>
...
{% endcache %}
...
</td>
</tr>
-- что было принципиально из-за особенностей верстки. Так и хотелось закрывающий {% endcache %}
поставить после последнего </td>
.
А у вас так бывает?
Недавний релиз Джанги 1.1 принес с собой новую фичу - пространства имен урлов. Цель они призваны достичь благую, но увы их механизм пока не очень прозрачен и понятен при первом приближении. Давайте разбираться.
Всё это родилось из идеи иметь несколько админок в одном проекте. И после рефакторинга админки под новые формы это стало возможным. Так же нужно было решить как разделять их урлы и главное как их реверсить по имени. Понятно, что в общем случае имена паттернов урлов разных админок будут пересекаться и однозначно преобразовать имя в урл невозможно. Тогда придумали каждому объекту SiteAdmin
давать имя и это имя становилось частью названия паттерна урлов соответствующей админки. Ещё особенностью являлось то, что админка это объект и её урлы скрыты в атрибуте urls
, что немного ломало классический способ инклюда урлов Джанги.
Что же сделали? Добавили разделение имен урлов. Причем разделенние на 2 уровня - уровень приложения и уровень инстанса приложения. Так что за приложения и что за инстансы?
Допустим у вас есть приложение foo
, в котором присутствует какое-то количество урлов. Раньше хорошей практикой считалось урлы называть с префиксом имени приложения, например foo_index
(или ещё каким-то уникальным идентификатором, что делала раньше админка (именем)). Теперь же. использую пространства имен, можно ограничится только index
и указать ...