【问题标题】:How to change an existing variable in a django template如何更改 django 模板中的现有变量
【发布时间】: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,现在我明白了。

标签: python django


【解决方案1】:

在模板中设置变量值违背了 Django 的设计理念。模板系统设计为separate logic from presentationavoid being a programming language

要实现您想要做的事情,您可以先过滤视图中的项目,然后使用for...empty 标记。您的示例将如下所示:

{% for project in projects_created_by_me %}
  <p>Project Name: {{project.projectName}}</p>
{% empty %}
  <p>You do not have any projects</p>
{% endfor %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-14
    • 2017-09-25
    • 2017-11-08
    • 2019-03-05
    • 2020-12-07
    • 2021-08-17
    • 2012-12-11
    • 1970-01-01
    相关资源
    最近更新 更多