使用 Django 更改整个 html 文档中特定字符串的颜色

Posted

技术标签:

【中文标题】使用 Django 更改整个 html 文档中特定字符串的颜色【英文标题】:changing color of a particular string in entire html document with Django 【发布时间】:2022-01-05 07:41:18 【问题描述】:

假设您的文档中有 100 个句子中的单词“day”。您可以通过以下方式更改该单词的颜色:

<span style="color: #ff0000"> day </span>

问题是你需要做 100 次。我正在使用 Django,我想在模板中使用 for 循环。所以,我现在的问题是改变某个句子中字符串的颜色,我不知道它会是什么。我尝试过类似的东西:

def colored(sentence, string, color):
    if string not in sentence:
        return sentence
    else:
        colored_string = f'<span style="color: color"> string </span>'
    return colored_string.join(sentence.split(string))

我认为这会给我提供彩色变量 string,但事实并非如此。它只是返回了字符串 '....

【问题讨论】:

您是说字符串看起来应该是这样,但 Django 不允许您将其呈现为 html 这行不通。我的想法是将更改后的彩色句子放入模板中,但问题是 Django 不像 html 那样识别它,而是像句子字符串一样识别它,所以它只是为您提供包含所有这些 html 内容的字符串。 我很确定这是 Django 转义 HTML 以防止 XSS 攻击。如果您确定字符串不会包含恶意代码或使用 javascript 在前端突出显示单词,您可以尝试将模板设置为允许不安全的 HTML。 我刚刚通过在 Django 模板中加入类似 sentence|safe 的东西解决了这个问题,它确实有效。我刚刚在这里找到了答案***.com/questions/7786493/… 【参考方案1】:

禁用autoescape,django 意识到您的字符串是代码,出于安全原因拒绝将其呈现为代码

ref

【讨论】:

以上是关于使用 Django 更改整个 html 文档中特定字符串的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何使用列表中显示的相关项目的下拉列表使特定模型类的 Django contrib Admin 更改列表可编辑?

根据 Django 文档,尝试使用 formfield_overrides 更改 TextField 字段大小时出错

整理django 知识点

选择特定选项后,如何更改 Django 模型字段的值?

如何在CloudFirestore中更改数组中的对象? [重复]

RXJava2 管理订阅