Django:在{{variable}}

时间:2017-08-07 20:12:28

标签: python html django

我在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中包含的单词是绿色而不是蓝色(句子的其余部分仍为蓝色),以便突出显示。

我没有办法做到这一点。我考虑将更多的静态文本移动到模板中,这样我就可以将变量var1设置为变量并对其应用不同的字体。这种方法暂时不起作用,因为根据views.py的控制流逻辑中发生的情况,本示例中显示为静态的文本实际上可能会更改为100多个不同的内容。

3 个答案:

答案 0 :(得分:3)

你为什么不尝试这样:

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

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

{{advice | safe}}

答案 1 :(得分:1)

我会通过将字符串分成三个变量来解决这个问题。字符串的开头字符串,变量和结尾。这仍然允许所有三个随程序的流程而改变。

的观点

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>

答案 2 :(得分:1)

您可以将dict密钥设置为list吗?如果是这样,请尝试:

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>