我需要这个原则才能发挥作用:
{% for a in activites %}
{% if not a.is_on_top %}
{% if not "form is displayed" %} <- how to do this?
Display the form
{% assign a boolean "form is displayed" %} <- how to do this?
{% endif %}
{% else %}
display a lot of stuff
{% endif %}
{% endfor %}
答案 0 :(得分:0)
我不认为你可以用香草标签做到这一点(但我会很高兴证明不是这样):
如果你有编程背景,或者你已经习惯了 将编程代码直接混合到HTML中的语言,你会想要的 要记住,Django模板系统不仅仅是Python 嵌入到HTML中。这是设计:模板系统的意思 表达,不是程序逻辑。
但是,您可以使用自定义from django import template
class AssignNode(template.Node):
def __init__(self, name, value):
self.name = name
self.value = value
def render(self, context):
context[self.name] = self.value.resolve(context, True)
return ''
def do_assign(parser, token):
"""
Assign an expression to a variable in the current context.
Syntax::
{% assign [name] [value] %}
Example::
{% assign list entry.get_related %}
"""
bits = token.contents.split()
if len(bits) != 3:
raise template.TemplateSyntaxError("'%s' tag takes two arguments" % bits[0])
value = parser.compile_filter(bits[2])
return AssignNode(bits[1], value)
register = template.Library()
register.tag('assign', do_assign)
代码:
{{1}}
(采取形式here)
Here是Django关于自定义标签的文档。
答案 1 :(得分:0)
您可以通过变量forloop.first
实现此逻辑,该变量可用于for循环。
例如:
{% if forloop.first %}
Display the form
{% endif %}