【问题标题】:If statment doesn't work in a template file如果语句在模板文件中不起作用
【发布时间】:2015-04-23 19:31:04
【问题描述】:

我对 Django 中的 if 语句有一个奇怪的情况。 django好像没看到,不知道为什么

我的模板文件:

            <div class="article-intro">
                <p>{{ article.jezyk }} </p>
                {% if article.jezyk = 'EN' %}   
                      {% for sala in sala %}
                                     <div>{{ sala }}</div>
                      {%endfor %}                     
                {% endif %}       
            </div>

看起来像这样:

正如我们在图片标签上看到的:

{{ article.jezyk }}

返回一个值'EN'

为什么“if 语句”不起作用?有什么解释吗?

我的意见.py

from django.shortcuts import render_to_response
from articles.models import Article
from sale.models import Sala
from godzina.models import Godzina
from jezyk.models import Jezyk


def articles(request):
    return render_to_response('articles.html',{'articles' : Article.objects.all(),'godzina': Godzina.objects.all(),'sala': Sala.objects.order_by('jezyk') })

【问题讨论】:

标签: python django python-2.7 django-templates django-views


【解决方案1】:

再一次,您没有提供回答问题所需的信息,即模型。但是,我们从您之前的问题中知道 Article.jezyk 是 ForeignKey。当您在模板中输出 FK 字段时,它将打印 unicode 方法的结果,但这并不意味着它们实际上是相等的。您需要比较字段本身,例如:

{% if article.jezyk.language = 'EN' %} 

或包含语言代码的 Jezyk 模型上的任何字段。

【讨论】:

    【解决方案2】:
    1. 试试这个ifequal

    例如

    {% ifequal article.jezyk 'EN' %}
      <!-- Ur code -->
    
    {% endifequal %}
    
    1. 使用==运算符

    例如

    {% if somevar == "x" %}
      This appears if variable somevar equals the string "x"
    {% endif %}
    

    文档:link

    1. 在 for 循环中使用其他变量名。相同的 sala 变量用于迭代器。

    例如:

    {% for i in sala %}
          <div>{{ i }}</div>
    {% endfor %}
    
    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2012-12-26
    • 2013-06-20
    • 2013-09-04
    相关资源
    最近更新 更多