【发布时间】:2019-04-02 22:53:41
【问题描述】:
这里是 Django 新手,需要一些帮助。我有一个布尔变量empty=True。我通过视图成功地将变量传递给我的模板。在模板中,我有一个包含 if/else 语句的 while 循环。如果它满足 if 语句中的条件,我需要能够将我的变量更改为 False。一旦我退出循环,就会有另一个 if/else 语句来检查空是 True。
我似乎不知道如何更改模板中的变量。
我确实尝试了一个 with 语句来更改变量,但它对我来说不能正常工作,因为我必须在循环结束之前结束 with 语句。一旦 with 语句结束,变量就会恢复到原来的值
观看次数 - '''
def myProjects(request):
user = request.user
projects = Project.objects.all() #from db
empty=True
return render(request,'users/myProjects.html',locals())
''' 模板 - '''
<div class="row" id="main1">
<div class="col-2"></div>
<div class="col-9">
<div>
<h1>My Projects: </h1>
{% for x in proj %}
{% if x.creator.user == me %}
<div class="media1">
<img class="account-img" src="{{x.projectPicture.url}}">
<div>
<h5><strong>Project Name: {{x.projectName}}</strong></h5>
<p>Project Type: {{x.projectType}}</p>
<p>Creator: <a href="/allUsers?name1={{x.creator.user}}"> {{x.creator.user}} </a></p>
<p class="text-muted small">Created: {{x.dateTime}}</p>
</div>
</div>
{{empty=False}}
{% else %}
{{pass}}
{% endif %}
{% if empty==True %}
<p>You do not have any projects</p>
{% else %}
{{pass}}
{% endif %}
{% endfor %}
</div>
</div>
</div>
{% endblock%}
'''
【问题讨论】:
-
你试过什么?一些代码会使问题更清晰,更有可能得到回答。
-
请包含一些代码,对我来说似乎最简单的方法是重新设计,我们可能会为您提供帮助。
-
即使你能找到设置变量的方法,这也是糟糕的设计。为什么不简单地将相关项目传递给模板?这样您就不必遍历所有项目来查看它们是否属于用户。您应该在视图中实现大部分逻辑,并在模板中进行简单的布局格式化。
-
还在努力适应 Django,现在我明白了。