码迷,mamicode.com
首页 > 其他好文 > 详细

Django 模板中使用if标签进行数据比较问题

时间:2015-04-08 14:56:17      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

    最近发现之前写一个程序存在一个问题,和大家分享下:

需求:

将视图中的数据根据如下条件在网页上显示不同的颜色:

[30,60] 蓝色

[0,30) 红色

(60,100] 绿色

 

之前的程序片段:

{% if x.y.5day_ago|floatformat:2 > 60|floatformat:2 %}
  <td style="color :green"><strong> {{x.y.5day_ago}}%</strong></td>
{% else %}
  {% if x.y.5day_ago|floatformat:2 < 30|floatformat:2 %}
      <td style="color :red"><strong>{{x.y.5day_ago}}%</strong></td>
    {% else %}
    <td style="color :blue">{{x.y.5day_ago}}%</td>
    {% endif %}
{% endif %}

 

可以基本实现对不同范围的数据显示不同的颜色。

但后面发现,对于[0,10]之间的数据,分成了三段,出现了红、蓝、绿三种不同的颜色,按照上面的条件,10以内的数字均在<30的范围内,应都显示为红色。百思不得其解。

为了解决这个问题,自定义了另外一个类似的字典,对应的值为数字类型的,使用这个条件可以正常显示。

最后将x.y.5day_ago类似的值的类型打印出来,才发现上‘str‘类型。故创建了过滤器num.py,将字符串转换为浮点型数据

from django import template
register = template.Library()
@register.filter(name=‘numgo‘)
def numgo(value):
     return (float(value))

模板中代码改为:

{% if x.y.5day_ago|numgo > 60|numgo or x.y.5day_ago|numgo = 100|numgo %}
  <td style="color :green"><strong> {{x.y.5day_ago}}%</strong></td>
{% else %}
  {% if x.y.5day_ago|numgo < 30|numgo %}
      <td style="color :red"><strong>{{x.y.5day_ago}}%</strong></td>
    {% else %}
    <td style="color :blue">{{x.y.5day_ago}}%</td>
    {% endif %}
{% endif %}

改成这样就不会出现上面的问题了,但为什么之前的[0,10]之间的数据不能正常的判断而其它区间的数据没有问题的原因还不是很清楚。

 

Django 模板中使用if标签进行数据比较问题

标签:

原文地址:http://www.cnblogs.com/junyiningyuan/p/4402261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!