首页 文章

web2py - for循环和改变背景颜色的功能?

提问于
浏览
0

我正在尝试应用一些应用程序,我需要根据“严重性”,红色,黄色或绿色的“报告”来改变某些图像的背景颜色 .

视图(index.html):

欢迎{{= auth.user.first_name}} {{用于报告中的报告:}} type =“text / css”> .eq_img {background-color:{{= bg_color(reports.severity)}(在样式标签中) )table with images class = eq_img

控制器(default.py):

def equipment():reported = db() . select(db.repo.ALL)return locals()

模型(db.py):

db.define_table('repo',Field('body','text',requires = IS_LENGTH(500,1),label =“report”),Field('severity',requires = IS_IN_SET(['Green', 'yellow','Red'])),Field('posted_on','datetime',readable = False,writable = False),Field('posted_by','reference auth_user',writable = False),def bg_color(severity ):if severity ==“Red”:返回'red'elif severity ==“Yellow”:返回'黄色'否则:返回'green'

现在它总是返回列表中最后一个报告的颜色 . 我需要它来找到最严重的报告,如果不是红色,那么是黄色,然后是绿色 . 任何帮助非常感谢 .

1 回答

  • 0

    您还没有完全清楚自己要做什么,但是如果要将.eq_img类的背景颜色设置为查询返回的所有记录中存在的最高严重性值,则可以执行以下操作:

    在模型中:

    severities = ['Green', 'Yellow', 'Red']
    
    db.define_table('repo',
        Field('body','text',requires=IS_LENGTH(500,1),label="report"),
        Field('severity', requires=IS_IN_SET(severities)),
        Field('posted_on','datetime', readable=False, writable=False),
        Field('posted_by','reference auth_user', writable=False))
    

    在控制器中:

    def equipment():
        reported = db().select(db.repo.ALL)
        max_severity = max([severities.index(r.severity) for r in reported])
        severity_color = severities[max_severity].lower()
        return dict(reported=reported, severity_color=severity_color)
    

    在上面, max_severity 是一个整数(0,1或2),对应于记录中找到的最大严重性级别 .

    在视图中:

    .eq_img {background-color:{{=severity_color}};}
    

    注意,上面的内容不应该在for循环中,就像在原始代码中一样 .

相关问题