Новый синтаксис URL от django 1.3 / dev и далее - PullRequest
2 голосов
/ 17 августа 2011

Почему разработчики ядра django позволили тегу url template напрямую указывать на функцию представления django? (ссылка - https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url)

{% load url from future %}

{# 1st method: pointing to a view function #}
{% url 'app_views.client' %}

{# 2nd method: pointing to a named url #}
{% url 'myapp:view-name' %}

Уже можно назвать URL-адрес в urls.py и, следовательно, использовать 2-й метод, чтобы указать конкретный URL-адрес. Неправильно разрешать разработчикам ссылаться на функцию представления непосредственно из шаблона.

Кто-нибудь знает, почему было принято это решение?

Ответы [ 2 ]

2 голосов
/ 17 августа 2011

Передача названия функции представления с точками в шаблонный тег {% url%} - это просто форма, которую шаблонный тег принял в более ранние дни Django, прежде чем вы смогли назвать URL-адреса. Он все еще поддерживается, хотя, как вы указываете, вы, вероятно, не будете использовать его в современном приложении.

0 голосов
/ 17 августа 2011

URL-адреса в Django - это просто отображение просмотров. Поэтому в шаблоне использование именованного URL в любом случае просто косвенно ссылается на представление.

Исключение составляют случаи, когда одно представление сопоставляется с несколькими URL-адресами.

Также обратите внимание, что они планируют изменить синтаксис тега url в 1.5. Он будет принимать переменную контекста в качестве параметра, а не строку. Тем не менее, он по-прежнему будет принимать просмотры или именованные URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...