Шаблоны django обращаются к значению dict на основе ключа - PullRequest
1 голос
/ 10 ноября 2011

в моем views.py я получаю 5 диктов, которые все что-то вроде {date: value}, все 5 диктов имеют одинаковую длину, и в моем шаблоне я хочу получить несколько URL-адресов на основе этих диктов, с общим полемдата - как вы сделали бы в запросе SQL при объединении 5 таблиц на основе общего столбца

в Python, вы бы сделали что-то вроде:

for key, value in loc.items():
    print key, loc[key], ctg[key], sctg[key], title[key], id[key]

но в шаблонах Django все, что я могпридумать вот что:

{% for lock, locv in loc.items %}
    {% for ctgk, ctgv in ctg.items %}
        {% for subctgk, subctgv in subctg.items %}
            {% for titlek, titlev in titlu.items %}
                {% for idk, idv in id.items %}

                          {% ifequal lock ctgk %}
                            {% ifequal ctgk subctgk %}
                                {% ifequal subctgk titlek %}
                                    {% ifequal titlek idk %}

                                    <br />{{ lock|date:"d b H:i" }} - {{ locv }} - {{ ctgv }} - {{ subctgv }} - {{ titlev }} - {{idv }}
                                     .... {% endifequals & endfors %}

что, конечно, уродливо и требует много времени для рендеринга

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

Ответы [ 2 ]

0 голосов
/ 10 ноября 2011

Шаблоны Django должны пытаться разрешить переменные с точкой в ​​качестве словарного поиска (если varaible - словарь).Так что ctg.key равно ctg[key].Вы пробовали это:

{% for key, value in loc.items %}
  {{ key|date:"d b H:i" }} - {{ value }} - {{ ctg.key }} - {{ subctg.key }} - {{ title.key }} - {{ id.key }}
0 голосов
/ 10 ноября 2011

Звучит так, будто вам нужно использовать что-то другое, кроме совмещенных диктовок.Как насчет слов небольшого класса, который содержит то, что вы хотите:

class MyThing:
  def __init__(self, loc, ctg, sctg, title, id):
    self.loc = loc
    self.ctg = ctg
    self.sctg = sctg
    self.title = title
    self.id = id

Не сделает ли это ваш код шаблона менее болезненным?(Извиняюсь, если я неправильно понял проблему - мне трудно следовать за вашими вложенными if s!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...