我一直在寻找堆栈,我无法得到任何工作。
对我来说更简单的是,我有一个上下文变量,我必须在for
循环中重新分配,我可以,但是当一个新的迭代开始时,变量被重置为它的原始上下文值。所以我的问题是,如何在整个循环中保持指定值的持久性?
我正在分配这样的值:
{% with task.new_stage as current %}{% endwith %}
代码的完整摘录如下:
{% for task in tasks_list %}
<h3>At Beg {{current}}</h3>
{% if task.project_stage.id != current %}
<div id="tasks-container-{{ task.project_stage.id }}" class="task-container btn-group-vertical col-md-3">
{% endif %}
<div class="panel my-panel tasks-panel col-md-11 {% if task.project_stage.has_started and not task.project_stage.has_ended %}active{% endif %} ">
<span class="text-uppercase">{{ task.task_name }}</span>
<div class="col-md-12">
<img id="task-{{ task.id }}" class="download-pdf" src="{% static 'dpp/images/cloud.png' %}" />
</div>
</div>
{% if task.project_stage.id != current %}
</div>{% with task.new_stage as current %}<h3>At End{{current}}</h3>{% endwith %}
{% endif %}
{% endfor %}
查看:
def get(self, request):
if not request.user.is_authenticated():
form = self.form_class(None)
return render(request, 'dpp/login.html', {'form': form})
tasks_list = ProjectTask.objects.all()
context = {
'tasks_list' : tasks_list,
'current' : 0,
}
return render(request, self.template_name, context)
答案 0 :(得分:2)
{% with %}
的上下文持续到{% endwith %}
。你在启动后立即结束该块,所以它实际上没有效果。
您不应该尝试在上下文中重新分配变量。如果您只是想检查自上次迭代以来某些内容是否发生了变化,您应该使用专为此设计的模板标记:ifchanged
。