如何在Django中根据字典条件为指定文本设置红色样式?
实现Django字典指定项文本高亮显示
步骤1:修正views.py代码
原代码存在上下文参数传递错误、模板渲染参数使用不当的问题,修改后如下:
def data_compare2(request): template = get_template("main/data_compare.html") dict2 = {"appel": 3962.00, "waspeen": 3304.07, "ananas":24} # 将需要高亮的目标值传入上下文 context = { "dict_data": dict2, "highlight_value": 3962.00 } return HttpResponse(template.render(context, request))
说明:
- 把字典重命名为
dict_data(也可保留dict2,只要模板对应即可),让变量名更清晰 - 将需要高亮的数值存入上下文,供模板判断使用
- 修正
render()调用逻辑,仅需传入上下文和request参数
步骤2:修正模板文件
原模板存在循环对象不匹配、if语法错误、样式未绑定到文本的问题,修改后如下:
<html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div class="container center"> {% for key, value in dict_data.items %} {% if value == highlight_value %} <span style="color: red;">{{ key }} {{ value }}</span><br> {% else %} {{ key }} {{ value }}<br> {% endif %} {% endfor %} </div> </body> </html>
说明:
- 循环对象改为上下文传入的
dict_data(如果views中保留dict2,此处对应改为dict2.items()) - 修正if标签语法:Django模板中条件判断直接写变量,无需额外用
{{}}包裹 - 用
<span>包裹目标文本并设置color: red,让指定项文本显示红色;若需要背景变红,可改为background-color: red - 添加else分支处理非高亮项的正常显示
简化实现(直接判断键名)
如果明确知道要高亮的键是"appel",可以不用在views中传额外参数,直接在模板判断:
{% for key, value in dict_data.items %} {% if key == "appel" %} <span style="color: red;">{{ key }} {{ value }}</span><br> {% else %} {{ key }} {{ value }}<br> {% endif %} {% endfor %}
这种方式更直接,无需修改views.py代码。
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

