Django:我如何前置

时间:2010-05-18 10:24:00

标签: django string

我正在探索Django并遇到了这个特殊问题。

如何在<span class="label">Note:</span>内添加{{article.content_html|safe}}

{{article.content_html|safe}}的内容是段落块,我只想在第一段添加<span class="label">Note:</span>

谢谢!

4 个答案:

答案 0 :(得分:1)

听起来你想写一个使用custom tag解析HTML并注入片段的BeautifulSoup

答案 1 :(得分:0)

没有简单的方法。您可以轻松地预先添加到所有文章。

<span class="label">Note:</span>
{{article.content_html|safe}}

如果这对您没有帮助,请考虑更改article.content_html的结构,以便您可以使用django模板中的块进行操作,因此它应该看起来像这样

{{article.content_header}}
<span class="label">Note:</span>
{{article.content_html}}

如果该解决方案对您不可行并且您绝对需要解析和修改article.content_html的内容,请编写自己的自定义过滤器来执行此操作。您可以在http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters找到有关编写自定义过滤器的文档。

答案 2 :(得分:0)

另一种方法可能是使用javascript执行此操作。在jQuery中,它看起来像:

var first_p_text = $("p:first").text()
$("p:first").html("<span class="label">Note:</span>" + first_p_text)

请注意,如果你的第一个p中有其他元素,$(“p:first”)。text()也将从这些元素中获取文本 - 请参阅http://api.jquery.com/text/

当然,这依赖于客户端中的体面javascript支持。

答案 3 :(得分:0)

jQuery是最简单,最容易实现的。您只需要一行前置调用(documentation):

$('p:first').prepend('<span class="label">Note:</span>');

说明: &#39; p:第一个&#39; jQuery selector,类似于&#39;:first-child& #39; CSS selector。它将选择第一段,然后prepend调用将把span插入到所选段落中。

注意:如果您的内容在页面上有段落,则可能需要用div包围它:

<div id='ilovesmybbq'>{{article.content_html|safe}}</div>

然后jQuery调用将是:

$('#ilovesmybbq p:first').prepend('<span class="label">Note:</span>');