Django:在由 {{variable}} 生成的文本字符串中间更改 HTML 模板的字体

Django: Change HTML template's font in the middle of a text string that is generated by a {{variable}}

提问人:Hack-R 提问时间:8/8/2017 最后编辑:marcusshepHack-R 更新时间:8/9/2017 访问量:2370

问:

我在 views.py 中生成了一个字符串,如下所示:

context_dict['advice'] = "Please consider selecting " + var1 + 
                         " as your next choice."

这显示在一个页面中,其模板已调用它,如下所示:

{% if advice %}
My advice:
<p style="font-size:20px; color:blue">
<b>{{advice}}</b>
</p>

因此,整个句子都使用相同的字体:20px、蓝色和粗体。但是,我希望其中包含的单词是绿色而不是蓝色(句子的其余部分仍然是蓝色),以便它脱颖而出。var1

我看不出有什么办法可以做到这一点。我考虑将更多的静态文本移动到模板中,这样我就可以制作变量并对其应用不同的字体。不过,这种方法目前不起作用,因为在此示例中显示静态的文本实际上可能会更改为 100+ 不同的内容,具体取决于 的控制流逻辑中发生的情况。var1views.py

蟒蛇 HTML Django

评论


答:

4赞 binu.py 8/8/2017 #1

你为什么不试试这样:

context_dict['advice'] = "Please consider selecting <span style='{0}'>{1}</span> as your next choice.".format('color:green;', var1)

这要求您将 HTML 模板中的变量更改为:

{{advice | safe}}

评论

0赞 Mangohero1 8/8/2017
这不会解析字符串中的 html
1赞 Mangohero1 8/8/2017
哦,不知道!我撤回我的发言:P我会把它包括在你的回答中,只是为了全面
1赞 marcusshep 8/8/2017 #2

我将通过将字符串分成三个变量来解决这个问题。字符串的起始字符串、变量和字符串的末尾。这仍然允许这三者随着程序的流程而改变。

视图

context['str1'] = 'Please consider selecting '
context['var1'] = var1
context['str2'] = ' as your next choice.'

模板

<div class="class1">{{ str1 }}</div>
<div class="class2">{{ var1 }}</div>
<div class="class1">{{ str2 }}</div>
1赞 Mangohero1 8/8/2017 #3

你能把钥匙设置为一个吗?如果是这样,请尝试:dictlist

context_dict['advice'] = ["Please consider selecting ", var1, " as your next choice."]

然后在您的 HTML 中:

<b>{{advice[0]}}</b><span style="color: green;">{{advice[1]}}</span><b>{{advice[2]}}</b>