【发布时间】:2018-07-16 12:52:40
【问题描述】:
我有两个块使用相同的变量调用相同的方法。我只想调用一次该方法,但结果超出了块标记的范围。我尝试在父模板header.html 和with 标记中调用此方法,但似乎没有任何效果。
这是布局:
{% extends "header.html" %}
{% load navigation_tags %}
{% block header %}
{% get_section site=site as section %}
{% include "foobar.html" with section=section %}
{% endblock header %}
{% block navigation %}
<nav>
<div class="container">
{% get_section site=site as section %}
{% navigation section.slug %}
</div>
</nav>
{% endblock navigation %}
navigation_tags.py
@register.assignment_tag
def get_parent_section(site):
if site.id == settings.FOOBAR_SITE_ID:
section = Section.objects.get(id=settings.FOOBAR_SECTION_ID)
else:
# This is also a section instance.
return site.default_section
【问题讨论】:
-
将
get_section的代码也包含在内可能是个好主意....此外,如果它不是一个昂贵的电话,那么做两次可能会更容易 -
@ResleyRodrigues 问题已更新。
-
会不会是因为你在
if条件下没有返回任何东西? -
@ResleyRodrigues 很好地指出,忘记了。然而,这不是问题。返回值仍然超出范围。
-
既然是同一个模板,你不能在视图注入的上下文中包含
section信息吗?