Каждый раз, когда вы обнаруживаете, что думаете: «Мне нужно сделать [эту сложную вещь] в шаблоне», ваш первый ответ должен состоять в том, чтобы написать собственный тег или фильтр.В этом случае вам, вероятно, понадобится тег включения, т. Е. Переместите блок if
с разметкой #Render Item In This Space # "в свой отдельный файл фрагмента шаблона и напишите тег в следующих строках:
@register.inclusion_tag('_render_item_location.html')
def render_item_location(locations, x, y):
key = "%s-%s" % (x, y)
if key in locations:
context = {'location': location[key]}
else:
context = {}
return context
Теперь ваш фрагмент шаблона может просто сделать {% if location %}whatever{% endif %}
, а ваш исходный шаблон имеет {% render_item_location itemLocations x y %}
.
Примечание. Я сделал поправку к вашему коду - со словарем, x in my_dict
все равно ищет ключи, поэтому нет необходимости явно вызывать keys()
.