2013-08-07 3 views
0

У меня есть словарь элементов какФормирование переменного динамически в шаблоне Джанго

{'Switch_all': 'N/A', 'Router_down': 'N/A', 'Switch_down': 'N/A', 'Router_all': 'N/A'} 

И я хотел бы перебрать этот словарь в шаблоне Джанго с помощью ключа еха: Switch_all.

Я могу получить данные из словаря, если я дать ключ как Switch_all

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

['Swich','Router'] 

Я должен пройти по этому списку и добавьте строку как _up, _down сформировать новую переменную, которая является одним из ключей в словаре.

Теперь я попытался с помощью фильтров пользовательских шаблонов, до сих пор я нашел трудности в прохождении двух аргументов

код, который я включен в шаблон является

{{ value|dyndictval:header,"_up" }} 

в приведенном выше значение кода является словарь и заголовок - это переменная, которая принимает аргумент типа Switch, Router и при добавлении со вторым аргументом (здесь это «_up») формирует ключ в словаре (значение).

Код пользовательского фильтра

def dyndictval(d, key1): 
keys = key1.split(',') 
return d.get(keys[0]+keys[1],'') 

Я преодолел это требование, используя отдельную переменную, созданную с использованием с тегом, как показано ниже, и используется то же самое, чтобы передать аргумент в пользовательский фильтр

{% with header|add:"_up" as templatevar %}>>>>{{templatevar}}<<<< 
        {{ value|dyndictval:templatevar }} 
        {% endwith %} 
+0

Этот вид обработки должен быть выполнен в представлении; а не шаблон. –

+0

Спасибо за комментарий. Я попытался сделать это с помощью пользовательского тега, но у меня есть проблема. У меня есть метод def dyndictval (d, key1): print 'debug in dyndictval <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<### (key1, ''), когда я попытался вызвать как {{значение | dyndictval: header, "_ up"}} из шаблона, который он провалил – Balachandar

ответ

0

Это должно быть сделано в представлении. Шаблон должен содержать только минимальную логику.

В представлении это можно сделать очень легко, используя python. Если вам нужна помощь, разместите свой код в качестве редактирования вопроса, и люди помогут.

+0

Привет, я изменил сообщение с изменениями, которые я сделал. Я использовал настраиваемый фильтр. тем не менее он потерпел неудачу, поскольку невозможно передать более одного элемента. Любая помощь по этому поводу будет полезна для меня – Balachandar

+1

Я преодолел проблему, с которой столкнулся, и я отредактировал сообщение, чтобы добавить детали того, что я сделал, чтобы исправить это – Balachandar