Хранение и экранирование тегов и фильтров Django в моделях Django - PullRequest
5 голосов
/ 29 августа 2010

Я выводю контент из моих моделей в мои шаблоны, однако некоторые поля модели вызывают данные, хранящиеся в других моделях.Это происходит только в нескольких областях.Мне интересно, будет ли использование тега if для оценки этого более эффективным по сравнению с хранением тегов django внутри моделей.

Ответы на на этот вопрос говорят, что хранение тегов django в моделях - это плохая идея без объяснения причин (хотя я думаю, что одной из причин может быть то, что кто-то другой может добавить некоторые теги в базу данных),Предполагая, что внедрение базы данных является редкостью, существует ли способ избежать тегов и фильтров Django, хранящихся в модели.

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

Пример :

Это должно быть сохранено в моих моделях

<p>We focus on:</p>
{% for item in services %}
{% url service_view item.id as service_url %}
<ul>
<li><a href="service_url">{{item.title}}</a></li>
</ul>
{% endfor %}

Вывод его должен привести к разбору django соответствующих тегов django, как будто частьшаблона

Ответы [ 3 ]

1 голос
/ 30 августа 2010

Спасибо, Нед, я попытался реализовать это, но я нашел, что это довольно сложно, и это также невыгодно с точки зрения переносимости.

Однако я нашел именно то, что мне было нужно в Django Snippets (не знаю, почему я не заглянул туда первым). Это довольно полезная утилита, известная как render_as_template .

После настройки его в качестве пользовательского тега все, что мне было нужно, это использовать его в форме {% render_as_template about_view.content %}, а теги в моделях отображались как модели.

Инструкции по созданию собственных шаблонов и тегов доступны здесь

0 голосов
/ 31 августа 2010

Вы должны использовать теги включения , а затем включать этот тег везде, где вы хотите, чтобы HTML отображался.Модель должна просто генерировать значения для переменных, а не форматировать.

0 голосов
/ 29 августа 2010

django-dbtemplates , вероятно, приближается к тому, что вы хотите.

...