用Django将文本加粗

4 投票
3 回答
12180 浏览
提问于 2025-04-16 01:48

我需要在普通文本中间让一些文字变成粗体,然后把它发送到模板里。我是这样做的:

我把一个字符串保存成这样 <b>TextPlaintext</b>,然后把它返回给模板。可是这些 "<b>" 标签没有被解析。

我该如何在 Django 的视图中让一些文字变成粗体呢?

3 个回答

1

你可以在Django模板中使用autoescape标签。

另外,如果你自己写了一个过滤器,你可以控制它是否被转义

9

Django会自动对模板中的字符串值进行转义,以提高安全性。

如果你确定某个值里面有HTML内容,并且这个内容是可信的,那么你可以关闭转义功能:

{{my_trusted_html|safe}}
3

让文字变粗体不应该在视图里处理。其实,视图不应该负责格式化,这个任务应该交给模板来做。不过,你可以在渲染的上下文中添加一个额外的变量,根据这个变量的值来决定在模板中是否让文字变粗。

比如说:

在视图里:

#...
is_important = True if something else False
extra_context.update({'is_important': is_important})
#...

在模板里:

...
{% if is_important %}<b>{{ text_to_render }}</b>{% else %}{{ text_to_render }}{% endif %}
...

但是更一般来说,决定一段文字是否要变粗体,其实不是格式化,而是样式的设置,这个也不应该在模板里处理(所以你不应该使用<bold>这样的标记)。所以我建议:

...
<span {% if is_important %}class="is-important"{% endif %}>
{{ text_to_render }}
</span>
...

还有一个样式表:

.is-important{
    font-weight: bold;
}

撰写回答