Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 19, 2007 10:46:47

NilovSerge
От:
Зарегистрирован: 2007-02-15
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

обрабатываю запрос DTML и ошибка

Всем привет
Подскажите пожалуйста. У меня в dtml-method-е строится список, беря данные из
ZMySql метода. Теперь мне нужно вывести этот список, но его элементы отсортировать в иерархии, что средствами SQL
я не сделаю. Я вызываю из своего dtml-method-а python-script из которого я вызываю свой sql-метод. Получаю массив данных.
На основе его строю свой массив. А теперь проблема в том, что вернув полученный массив не могу его обработать.
Делаю так:

get_data_select_organizations Script-(Python):
...
ResArray=[] # Этот массив я верну
result = context.sql.select_regions() # беру данные из Sql
ArrRegions = result.dictionaries()
L= len(ArrRegions)
for I in range(L):
    RegionId=ArrRegions[i]['regionID']
    RegionName=ArrRegions[i]['regionName']
    A={'id':0,'name':''} # это будет новая трока в моем массиве
    A['id']= RegionId
    A['name']= RegionName
    ResArray.append(A)  # Добавляю 1 строку запроса
...
#обработка данных
... 
return ResArray
Если вывести ResArray на экран то получается:

В dtml-е:
<dtml-in get_data_select_organizations>
  <option value="<dtml-var id>" <dtml-if expr="id==SESSION['organizationID']">SELECTED</dtml-if>  > <dtml-var name> </option>
</dtml-in>

и валится на “name”:KeyError: ‘name’ (Also, the following error occurred while attempting to render the standard error message, please see the event log for full details: ‘name’)
и заместо <dtml-var id> - пишет имя обьекта
Я попробовал вывести <dtml-var sequence-item> и получил на экран :{'id': 14L, ‘name’: ‘ BLUM EL’}
А до свойства ‘name’ я достучаться не смог. Можно ли такое сделать и как ?


Совет юзай ZTP а не DTML - хорош, но в данном случае не подходит. Там довольно большой кусок на dtml и он написан не мной.
Кстати в ZPT я так делал и все работает. Похоже в ZTP и DTML по разному организованные данные при обработке цикла?



Офлайн

#2 Апрель 23, 2007 12:58:09

albert
От:
Зарегистрирован: 2006-09-15
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

обрабатываю запрос DTML и ошибка

я точно не помню, но там должны быть махинации со знаками “-” или “.”. Что-то вроде того:
sequence-item-name
name-sequence-item
sequence-item.name
name.sequence-item
Или как-то так



Офлайн

#3 Апрель 23, 2007 12:59:40

albert
От:
Зарегистрирован: 2006-09-15
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

обрабатываю запрос DTML и ошибка

NilovSerge
Кстати в ZPT я так делал и все работает.
Так как там написано никогда работать не будет ни в ZPT, ни в DTML



Офлайн

#4 Апрель 23, 2007 18:33:17

NilovSerge
От:
Зарегистрирован: 2007-02-15
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

обрабатываю запрос DTML и ошибка

albert
Для dtml что-то вроде :

sequence-item-name
name-sequence-item
sequence-item.name
name.sequence-item

как написано в мануале - не работает. По крайней мере мне не удалось запустить…
А вот пример как я в скрипте сам создавал массив данных. Этот скрипт вызывается из ZPT. Это сейчас работает:
result = context.select_surveydata(survey_id=survey_id)
ResArray=
if result:
# There should be exactly one result
L= len( result.dictionaries() )

PagesCount= int(L/ItemsInPage)
ItemsLeft= int(L%ItemsInPage)
if ( ItemsLeft> 0 ):
PagesCount= PagesCount+1
resultDict = result.dictionaries()

FirstIndex= ItemsInPage*(PageNumber-1)
LastIndex= ItemsInPage*PageNumber
if ( LastIndex> L ):
LastIndex= L
for I in range( FirstIndex, LastIndex ):
A={'id':0,'name':''}
A= resultDict
A= resultDict
A= PageNumber
A= PagesCount
ResArray.append( A )

return ResArray
тут все просто. Просто я хочу запрос разбить на части и показать по номеру страницы.
А с dtml такой номер не прошел… И я не уловил разницы…



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version