Как управлять множеством собственных шаблонных тегов (которые сделаны для виджетов)? - PullRequest
0 голосов
/ 11 февраля 2011

Некоторые части шаблона Django являются своего рода виджетами 1 , которые реализованы с использованием тегов шаблона , и их может быть много некоторых на странице(например, в зависимости от сеансовых файлов cookie)

Подход, подобный этому, подойдет, если их количество ограничено:

{% extends "some.html" %}
{% load mywidgets %}

{% block widgets %}
{% if widget1 %} {% widget1 %} {% endif %}
{% if widget2 %} {% widget2 %} {% endif %}
...

{% if widgetn %} {% widgetn %} {% endif %}
{% endblock widgets %}

Но что, если это не так?Как обрабатывать огромное количество виджетов?


1 Вы можете понять, что я имею в виду на iGoogle ;)

1 Ответ

1 голос
/ 11 февраля 2011

Я думаю, что эти виджеты должны быть какими-то объектами, а не шаблонными тегами. Объекты, которые могут сделать их самостоятельно. Затем вы можете просто сохранить эти объекты в списке и отобразить их в цикле.

В связи с этим вы бы инициализировали эти объекты, передав request или другие обязательные аргументы. Объект виджета реализует метод __unicode__, который будет его отображать. Затем в шаблоне вы должны сделать это: {{ widget }}.

widgets.append( Widget(request) )

--

{% for widget in widgets %}
    {{ widget }}
{% endfor %}

Ваши виджеты могут быть даже моделями Django. Тогда вы можете сохранить настройки и связать их с пользователями.

Возможно, вы захотите проверить, как fein-cms, django-cms реализуют заполнители содержимого. Любой вид объектов содержимого может быть связан с заполнителем. Объект содержимого может отображаться самостоятельно, а заполнитель просто отображает их коллекцию.

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