我有两个块调用相同的方法和相同的变量。我希望只调用一次该方法,但结果在块标记的范围之外。我尝试在父模板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
的代码是个好主意。如果它不是一个昂贵的调用,那么做两次可能会更容易。 - Resley Rodriguesif
条件中没有返回任何内容吗? - Resley Rodriguessection
信息?请注意不要改变原意,让翻译更加通俗易懂。 - Fernando Cezarview
的返回值。您可以像这样向模板注入上下文:https://docs.djangoproject.com/en/2.0/intro/tutorial03/#write-views-that-actually-do-something - Fernando Cezar