У Django есть помощники HTML? - PullRequest
       49

У Django есть помощники HTML?

23 голосов
/ 14 сентября 2008

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

{% url mapper.views.foo %}

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

Ответы [ 6 ]

26 голосов
/ 16 сентября 2008

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

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

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

EG. Что произойдет, если / когда HTML 5 будет наконец реализован и Django генерирует разметку HTML 4 или XHTML?

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

21 голосов
/ 19 сентября 2009

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

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

EG. Что произойдет, если / когда HTML 5 наконец-то реализовано и Django создание разметки HTML 4 или XHTML?

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

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

2 голосов
/ 14 сентября 2008

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

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

1 голос
/ 16 сентября 2008

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

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

0 голосов
/ 17 сентября 2008

Бьюсь об заклад, если бы было какое-либо согласие с тем, что является common html , там также был бы модуль помощников, просто для полноты (или потому, что у других это есть). ;)

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

0 голосов
/ 16 сентября 2008

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

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