2009-05-15 2 views
1

Я хотел бы создать HttpResponse, который содержит определенную строку. Для каждого из символов в строке у меня есть цвет фона, который я хочу использовать.HTML Newbie Question: Цветной фон для символов в Django HttpResponse

Для упрощения предположим, что у меня есть только оттенки зеленого в фоновом режиме и что данные «цвета фона» представляют «уровень яркости» в зеленом домене.

Например, ответ может быть «ABCD», и мой «цвет фона» данные могут быть:

[0.0, 1.0, 0.5, 1.0] 

Это будет означать первый символ «а» должна иметь фон темно-зеленый (например, 004000), второй символ «b» должен иметь фон ярко-зеленого (например, 00ff00), третий символ «c» должен иметь «среднюю» яркость (например, 00A000) и т. д.

Я не хочу использовать шаблон, а просто возвращаю ответ «обычный текст». Это возможно?

Если нет - какой будет самый простой шаблон, который я мог бы использовать для этого?

Благодаря

ответ

2

Это может быть что-то вроде этого:

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) 

непроверенных

+0

Это сработало для меня, за исключением небольшого исправления: значение, используемое для значения цвета (в примере colors.pop (0)), должно быть умножено на 255 в аргументе строки. –

+0

и i и colors.pop (0), где перемешаны. Но теперь я исправил его – vikingosegundo

2

вы можете использовать что-то вроде этого, чтобы генерировать 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>" 
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)) 

Я бы предположил, что это также можно сделать в шаблоне, если хотите.