Встроенная техника Python / Django для объектов - PullRequest
0 голосов
/ 16 декабря 2009

Я читаю исходный код приложения Django блог на git://github.com/nathanborror/django-basic-apps.git.

Как прочитать следующий код Django?

{% tags_for_object object as tag_list %} 

Моя попытка: Сделать переменную объект типа tags_for_object и переименовать переменную в tag_list .

Объект , по-видимому, основан на файле blog / templates / inlines / default.html:

{% if object %}
  {{ object }}
{% else %}
  {% for object in object_list %}
    {{ object }}
  {% endfor %}
{% endif %}

Какая польза от применения логики к двухэтапной процедуре: запустить один объект, иначе перебрать список объектов?

1 Ответ

4 голосов
/ 16 декабря 2009

Похоже, tags_for_object - это тег шаблона из приложения django-tagging .

Из документации django-tagging :

tags_for_object:

Получает список Tag объектов связанные с объектом и магазинами их в контекстной переменной.

Использование:

{% tags_for_object [object] as [varname] %}

Пример:

{% tags_for_object foo_object as tag_list %}

Затем можно просмотреть переменную tag_list в шаблоне для отображения тегов.

{% tags_for_object foo_object as tag_list %}

<ul>
{% for tag in tag_list %}
  <li>{{ tag }}</li>
{% endfor %}
</ul>

Что касается второй части вашего вопроса, вы правильно понимаете код. Если переменная object существует в контексте (и не оценивается как False), она отображается. Если он не существует в контексте (или если он оценивается как False), тогда код перебирает objects в object_list и отображает их.

Что касается , почему вы захотите это сделать, вам придется взглянуть на код, который использует inlines/default.html, чтобы понять, что имел в виду дизайнер.

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