HTML新手问题:Django HttpResponse中字符的背景色

1 投票
3 回答
835 浏览
提问于 2025-04-15 11:37

我想生成一个HttpResponse,里面包含一个特定的字符串。对于这个字符串中的每个字符,我都有一个想用的背景颜色。

为了简化问题,我们假设背景颜色只能是绿色的不同深浅,而这些“背景颜色”的数据代表了绿色的“亮度级别”。

举个例子,假设响应是'abcd',而我的“背景颜色”数据可能是:

[0.0, 1.0, 0.5, 1.0]

这就意味着第一个字符'a'需要用深绿色的背景(比如004000),第二个字符'b'需要用亮绿色的背景(比如00ff00),第三个字符'c'需要用“中等”亮度的背景(比如00A000),依此类推。

我不想使用模板,而是想直接返回“纯文本”响应。这样做可以吗?

如果不行,那我能用什么最简单的模板呢?

谢谢

3 个回答

1

在这种情况下,最好的选择是使用 span 元素,并配合样式表。如果你不想用模板的话,那就得把它直接写在代码里。举个例子:

string_data = 'asdf'
color_data = [0.0, 1.0, 0.5, 1.0]
response = []
for char, color in zip(string_data, color_data):
    response.append('<span style="background-color:rgb(0,%s,0);">%s</span>' % (color, char)
response = HttpResponse(''.join(response))

我想如果你愿意的话,这也可以在模板里实现。

2

你可以像这样在Django的视图中生成HTML,并将其作为文本/HTML返回。

data = "abcd"
greenShades = [0.0, 1.0, 0.5, 1.0]

out = "<html>"
for d, clrG in zip(data,greenShades):
    out +=""" <div style="background-color:RGB(0,%s,0);color:white;">%s</div> """%(int(clrG*255), d)
out += "</html>"
3

这可能是像这样的代码:

aString = 'abcd'
newString =''
colors= [0.0, 1.0, 0.5, 1.0]
for i in aString:
    newString = newString + '<span style="background-color: rgb(0,%s,0)">%s</span>'%(colors.pop(0)*255,i)



response = HttpResponse(newString)

这个代码还没有经过测试。

撰写回答