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

Posted

技术标签:

【中文标题】如果语句在模板文件中不起作用【英文标题】: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') )

【问题讨论】:

因为它是% if article.jezyk == 'EN' % - 注意==... 文档说:if 标签也可以使用运算符 ==、!=、、 = 并且其中的工作如下: - ref: docs.djangoproject.com/en/1.7/ref/templates/builtins/#operator 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:
    试试这个ifequal

例如

% ifequal article.jezyk 'EN' %
  <!-- Ur code -->

% endifequal %
    使用==运算符

例如

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

文档:link

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

例如:

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

【讨论】:

见:***.com/questions/11733651/…

以上是关于如果语句在模板文件中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

“动作”属性在“Angular”模板中不起作用

使用 if 语句后跟调用似乎在批处理文件中不起作用

模板目录的路径在 settings.py 中不起作用

else 在 if 语句中不起作用

Jquery .load() 在 Django 模板中不起作用

为啥模板参数推导在 C++ 中不起作用?