我正在探索Django并遇到了这个特殊问题。
如何在<span class="label">Note:</span>
内添加{{article.content_html|safe}}
?
{{article.content_html|safe}}
的内容是段落块,我只想在第一段添加<span class="label">Note:</span>
。
谢谢!
答案 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>');