如果语句在模板文件中不起作用

时间:2015-02-22 11:51:40

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

我在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>

看起来像这样: enter image description here

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

{{ article.jezyk }}

返回值'EN'

为什么然后“if statment”不起作用?有什么解释吗?

我的views.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') })

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

  1. 试试这个ifequal
  2. e.g

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

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

      文档:link

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

        {% for i in sala %}
              <div>{{ i }}</div>
        {% endfor %}