首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改HTML表中具有相同单元格值的相同颜色的行- Django项目

更改HTML表中具有相同单元格值的相同颜色的行- Django项目
EN

Stack Overflow用户
提问于 2022-02-04 16:43:16
回答 1查看 99关注 0票数 1

我在html文件中为Django项目创建了一个表,原始数据基于以下列表(这是一个非常长的列表,因此我只列出了几行):

代码语言:javascript
复制
mylist=
[{'StartDate': '2021-10-02', 'ID': 11773, 'Receiver': Mike, 'Days':66 },
{'StartDate': '2021-10-03', 'ID': 15673, 'Receiver': Jane, 'Days':65}, 
... 
{'StartDate': '2021-10-5', 'ID': 34653, 'Receiver': Jack, 'Days':63}]

我的Html文件:

代码语言:javascript
复制
  <table class="table table-striped" id="dataTable" width="100%" cellspacing="0">
                                    
     <thead>
        <tr>
            <th>StartDate</th>
            <th>ID</th>
            <th>Name</th>
            <th>Days</th>
        
     </thead>
     <body>

{% for element in mylist %}

      <tr>
        <td>{{ element.StartDate}}</td>
        <td>{{ element.ID }}</td>
        <td>{{ element.Receiver }}</td>
        <td>{{ element.Days }}</td>

       </tr>
      {% endfor %}      
       </tbody>
                         
      </table>

我想使所有具有相同ID值的行都具有相同的颜色。请告诉我应该在<td>{{ element.ID }}</td>中添加些什么。谢谢!

我的views.py的一部分:

代码语言:javascript
复制
client = gspread.service_account_from_dict(creds)


def CreateSheet(Return_record):
    sheet = client.open(Return_record).sheet1
    return sheet

from sheet2api import Sheet2APIClient


sheet = client.open('Return Record 2022')
sheet_instance = sheet.get_worksheet(0)
mylist = sheet_instance.get_all_records()
mylist


def table2022(request):
    return render(request,'table2022.html',{'mylist':mylist})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-04 20:09:11

我们想作为上下文传递的所有内容,都应该保存在我们想要在其中使用的view中。当我们有越来越多的代码时,它就更加可读性了。

我们要做的是,定义数字0-9的颜色。现在我会选择一些轻型colors,你可以随意修改它们。

views.py:

代码语言:javascript
复制
def table2022(request):
    mylist = sheet_instance.get_all_records()
    colors = {'0': 'aqua', '1': 'beige', '2': 'burlywood', '3': 'lightgrey', '4': 'silver', '5': 'skyblue', '6': 'lightblue', '7': 'lightpink', '8': 'lightgreen', '9': 'lawngreen'}
    context = {'mylist': mylist, 'colors': colors}

    return render(request, 'table2022.html', context)

现在,因为在模板中使用Python并不那么简单,我们需要创建自定义Template Tag。让我们从在应用程序中创建文件夹开始,让我们将其命名为custom_tags.py。它应该在YourProject/your_app/templatetags/文件夹中创建,所以我们还必须在其中创建templatetags文件夹。

custom_tags.py:

代码语言:javascript
复制
from django import template

register = template.Library()

@register.filter(name='get_color')
def get_color(colors, number):
    return colors[str(number)[-1]]

your_template.html:

代码语言:javascript
复制
{% load custom_tags %}

...

{% for element in mylist %}
    <tr>
        <td>{{ element.StartDate }}</td>
        <td style="background-color: {{ colors|get_color:element.ID }}">
            {{ element.ID }}
        </td>
        <td>{{ element.Receiver }}</td>
        <td>{{ element.Days }}</td>
    </tr>
{% endfor %}

get_color标记基本上是取整个ID,然后只提取最后一个数字并使其成为一个字符串。在此之后,它使用单个数字作为colors字典中的键,并将相应的值传递给模板,其中它将是一个有效的html颜色。

自定义标记用于直接将某些Pythonic代码“实现”到模板中。不要过多地使用它,因为大多数编码应该在标准文件中,如views.pymodels.py。但有时没有更好的方法了。:)

有关Tags的更多详细信息,请查看Django's DOCS

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70989928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档