如何管理很多自己的模板标签(为小部件制作)?

时间:2011-02-11 18:08:42

标签: django django-templates

Django模板的某些部分是有点小部件 1 ,它们已经实现using template tags并且页面上可能有很多部分它们(取决于例如,在会话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 个答案:

答案 0 :(得分:1)

我认为这些小部件应该是某种对象,而不是模板标签。可以渲染它们的对象。然后,您可以简单地将这些对象存储在列表中并在一个循环中渲染它们。

在视图中,您将通过传递request或其他必需参数来初始化这些对象。 Widget对象将实现将呈现它的__unicode__方法。然后在模板中,您将呈现它:{{ widget }}

widgets.append( Widget(request) )

--

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

您的小部件甚至可能是django型号。然后,您可以存储设置并将其与用户关联。

您可能想查看fein-cms,django-cms如何实现内容占位符。任何类型的内容对象都可以与占位符相关联。内容对象可以自我呈现,占位符只是呈现它们的集合。