Вопрос

Есть ли в Django какие-либо шаблонные теги для генерации общей HTML-разметки?Например, я знаю, что могу получить URL-адрес, используя

{% url mapper.views.foo %}

Но это дает мне только URL, а не HTML-код для создания ссылки.Есть ли в Django что-нибудь похожее на помощник link_to от Rails?Я нашел django-помощники но поскольку это обычное дело, я думал, что в Django будет что-то встроенное.

Это было полезно?

Решение

Нет, это не так.

Джеймс Беннетт ответил на похожий вопрос некоторое время назад я касался встроенных в Rails помощников JavaScript.

Это в самом деле маловероятно, что в Django когда-либо будет встроена "вспомогательная" функциональность.Причина, если я правильно понимаю, связана с основной философией Django по сохранению вещей слабо связанный.Наличие встроенных вспомогательных функций такого рода приводит к связыванию Django с определенной библиотекой JavaScript или (в вашем случае) типом документа html.

НАПРИМЕР.Что произойдет, если / when HTML 5 наконец будет реализован и Django сгенерирует разметку HTML 4 или XHTML?

Сказав это, фреймворк шаблонов Django действительно гибкий, и было бы не так уж сложно создавайте свои собственные теги / фильтры это сделало то, что ты хотел.Я сам по большей части дизайнер, и мне удалось создать пару пользовательских тегов, которые сработали как нельзя лучше.

Другие советы

Цель помощников не в том, чтобы, как подразумевают другие здесь, помогать разработчикам, которые не знают, как писать HTML.Цель состоит в том, чтобы инкапсулировать общую функциональность - чтобы вам не нужно было писать одно и то же тысячу раз - и предоставить единое место для редактирования общего HTML, используемого во всем вашем приложении.

Это та же причина, по которой полезны шаблоны и SSI - не потому, что люди не знают, как написать HTML в своих верхних и нижних колонтитулах, но иногда вы хотите написать это только один раз.

НАПРИМЕР.Что произойдет, если / when HTML 5 будет окончательно реализован, а Django будет генерировать разметку HTML 4 или XHTML?

То же самое происходит, когда реализован HTML 5 и все ваши шаблоны написаны на повторяющемся HTML, за исключением того, что они намного проще.

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

не похоже, что они встроены, но вот пара фрагментов.похоже, создать этих помощников было бы довольно просто:

http://www.djangosnippets.org/snippets/441/

Вот такой список всех тегов шаблонов и фильтров, встроенных в Django.В Django core не так много помощников по HTML, как в Rails, потому что авторы Django предполагали, что веб-разработчик очень хорошо знает HTML.Как заявил saturdaypalace, очень маловероятно, что помощники AJAX будут добавлены в Django, потому что это привело бы к связыванию Django с определенной библиотекой JavaScript.

Это очень легко сделать напишите свои собственные теги шаблонов в Django (часто вам нужно просто определить одну функцию, аналогичную Rails).Вы могли бы переопределить большинство помощников Rails в Django в течение дня или двух.

Держу пари, если бы было хоть какое-то согласие с тем, что есть общий html, там тоже был бы модуль helpers, просто для полноты картины (или потому, что он есть у других).;)

Кроме этого, система шаблонов Django создана в основном для пользователей HTML, которые уже знают, как писать p, img и a теги и не нужны никакие помощники за это.С другой стороны, есть разработчики Python, которые пишут код и им все равно, заключена ли переменная, которую они помещают в контекст, в div или с помощью span (прекрасный пример разделение интересов парадигма).Если вам нужно соединить эти два мира, вы должны сделать это самостоятельно (или поискать чужой код).

Это не даст прямого ответа на вопрос, но почему бы не использовать <a href="{% url mapper.views.foo %}">foo</a> тогда в шаблоне?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top