django动态包含标签

时间:2014-06-08 14:47:30

标签: django django-templates django-views django-filter

我正在尝试向模板添加一些图库,但页面上图库的位置需要由用户定义。有时它会位于文本的顶部,有时位于页面文本的末尾,有时位于文本的中间位置。在文本字段中,用户将添加此行#foto并根据我需要渲染图库的那一行的位置。例如:

some paragraph written by user in the text field...

#foto

some another paragraph written by user ...

现在最简单的方法是在视图中使用include标记替换#foto。有点像:

foto = "{% include 'includes/gallery.html' %}"
xx = "#foto"
post.text = post.text.replace(xx, foto)

但是这个例子不起作用,因为include标签不能以这种方式调用。它呈现为纯文本{%include'includes / gallery.html'%}。可以执行的操作包括#foto文本位置上预期的标记。

1 个答案:

答案 0 :(得分:0)

在视图中指定渲染的模板:

...
from django.template.loader import render_to_string
"""
Get the items from the model, define your query
"""
gallery = GalleryModel.objects.all()
"""
Render gallery template and assign to foto, which then you
can inject in the basic template
"""
foto = render_to_string('includes/gallery.html', {'gallery': gallery})
...

然后在你的模板中:

{{ foto }}