在Django模板变量中间插入内容

2024-06-16 10:07:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django有一篇文章模型。我从数据库中为每一篇文章提取一些段落,如下所示(有一个Markdown自定义模板标记):

{{ article.text|markdownify|safe }}

给我的感觉是:

^{pr2}$

我想知道是否可以在这些段落之间插入一些内容,也许是另一个包含来自数据库的其他信息的Django变量或一些更复杂的逻辑(if语句等)。在我的情况下,这将是一组图像。在

我的目标是这样的:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.</p>
<p>Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur.</p>

{% if 1==1 %}
  {{ article.more_stuff }}
{% endif %}

<p>Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus.</p>

有没有一种优雅的方式来实现这一点?非常感谢。在


Tags: django标记模型模板数据库ifarticle文章
2条回答

您可以通过custom template tag来完成此操作。比如:

from django import template

register = template.Library()

@register.simple_tag(takes_context=True)
def render_article(context, article):
    t = template.Template(article.text)
    return t.render(context)

然后在模板中:

^{pr2}$

关于将字符串呈现为模板的文档是here。只需非常小心地允许不受信任的用户创建文章。有人可以将{{ article.__class__.objects.all.delete }}放在文章文本中,导致在呈现时每个文章都被删除。在

没有任何内置的方法可以做到这一点。你可以自己实现一些东西,也许是模板标记的形式,用BeautifulSoupv解析内容并将其分解为一个段落列表,然后将该列表分配给一个可以迭代的变量。在

相关问题 更多 >