我想生成一個網站的主頁,其中包含不同類型的各個部分。有一個關於我們的部分,最近的項目部分等。我的目標是將視圖邏輯和模板渲染留給組成這個項目的各個應用程序(關於,組合等)。我目前的解決方案包括動態地構造一個Django模板,然後使其像這樣:我可以使用django模板呈現django模板嗎?
在MYAPP/templatetags /myapp_tags.py:
@register.simple_tag
def render_sections(sections):
template = ""
for section in sections:
if section.type == "about":
template += "{% load about %}"
template += "{% render_about_section %}"
elif section.type == "portfolio":
template += "{% load portfolio %}"
template += "{% render_portfolio_section %}"
return render_to_string(template)
模板/ index.html的:
{% load myapp_tags %}
{% block content %}
{% render_sections %}
{% endblock %}
由於我已經在構建一個模板,我想知道:爲什麼我不能使用django的模板系統來呈現django模板?可以替換上述代碼的示例模板是:
{% for s in sections %}
{% load {{s.type}} %}
{% render_{{s.type}}_section %}}
{% endfor %}
我能做些什麼來完成這項工作?有沒有更好的方法來呈現異構項目列表?