2014-11-12 5 views
-1

У меня есть сценарий, который использует CherryPy. Сценарий работает хорошо, и HTML-страница в порядке. На странице HTML я показываю содержимое одного списка (это только упражнение для обучения). Даже это работает, но если я попытаюсь поместить фоновый цвет на основе значений в списке, начнется проблема!Cherrypy issue on update list

  class HelloWorld(object): 
       @cherrypy.expose 
       def index(self): 

       for i in range(0, len(li)): 
        status_bkg[i]=color_status(li) 

состояние цвет немного функция возврата «зеленый», если Ли [я] == 1 «красный», если 0. Тогда я посылаю эти два списка HTML файл следующим образом:

template = loader.load('index.html') 
title = "Exerc 2" 
ctx = Context(title=title, li=li, status=bkg=status_bkg) 
return template.generate(ctx).render('html', doctype='html') 

Теперь HTML-файл имеет такую ​​структуру:

 ... 
    <tr py:for="i in len(li)"> 
       <td class="${status_bkg[i]}">${li[i]}</td> 
    <tr>   

два класса «зеленый» и «красный» оК. Первый раз все отлично. Но когда скрипт python начинает добавлять время от времени случайным образом 0 или 1 к списку, проблема повышается! Два списка имеют одинаковую длину, но обновляется только «li», а не статус_bkg!

Где я ошибаюсь? Скажите, если вам нужно больше кода, я понимаю, что немного упростил.

Спасибо!

+0

'status_bkg [i] = color_status (li)' кажется неправильным - для каждого элемента 'color_status' вызывается весь список. – jwalker

+1

Если вы действительно хотите получить ответ на сайте, вам нужно приложить некоторые усилия, написав ваши вопросы и сделав их понятными. Вы не указали название используемого вами шаблона, как в тексте, так и в тегах, и это около полутора десятков активно используемых там. Неверный тэг '' list'', который вы видите, зависающий. Ваш отпечаток фрагмента Python нарушен. Поэтому теперь тот, кто хочет помочь вам, может потребоваться больше времени, чтобы расшифровать ваш вопрос, а не отвечать на него. – saaj

ответ

0

Я вижу еще опечатку в коде (только для тех, кто захочет помочь):

ctx = Context(title=title, li=li, status=bkg=status_bkg) 

должны быть:

ctx = Context(title=title, li=li, status_bkg=status_bkg) 

Я думаю, что проблема в вашем цикл, Ли никогда не повторяется. Предполагая status_bkg это список, я бы изменить свой цикл для:

for i in li: 
    status_bkg.append(color_status(i)) 

Что бы убедиться в том, что каждый элемент литий имел соответствующий status_bkg элемент.

+0

о, извините! Это только ошибка при копировании и вставке! Я исправлю это. Спасибо – user2174050

+0

Спасибо за ответы. Правильно, но есть еще одна странная ошибка, которую мне нужно исправить. Странно, что это приводит к сбою в нормальной работе для цикла. – user2174050