当前位置: 首页 > 知识库问答 >
问题:

Django:如何在模板中的if语句中使用变量?

邵阳
2023-03-14

我的 views.py 交出了一个名为“preSelect”的变量,其中包含一个整数值。

在模板中,我想在 If 语句中使用该 Integer 来检查当前 for 循环计数器是否小于或大于我的值。

{% if forloop.counter <= {{ preSelect }} %}
    <td><input type="checkbox" name="checks" id="1" value={{ row.0 }} checked/></td>
{% else %}
   <td><input type="checkbox" name="checks" id="1" value={{ row.0 }} /></td>
{% endif %}

但是,这会返回以下错误:

环境:

申请方式: POST申请网址:http://127.0.0.1:8000/

Django版本:1.10.2 Python版本:2.7.11安装的应用:['django.contrib.admin ',' django.contrib.auth ',' django.contrib.sessions ',' django.contrib.messages ',' django.contrib.staticfiles ',' testsetcreation']安装的中间件:[' django . Middleware . security . security Middleware ',' django . contrib . sessions . Middleware ',' django . Middleware . common Middleware ',' django . common Middleware . common Middleware ','

模板错误:在模板D:\Django\testsetcreate\template\testsetcreate\testsetView.html中,第61行错误无法解析“{{”51中的剩余: '{{' :注释52:
SW版本53: HW版本
54: ABP 55:
项目56:57:
58:59:{%for row in row%} 60:61:{%ifforloop.counter

追溯:

文件"c:\Python27\lib\site-包\django\core\handler\exception.py"在内部39.响应=get_response(请求)

文件“c:\ python 27 \ lib \ site-packages \ django \ core \ handlers \ base . py”in _ get _ response 187。response = self . process _ exception _ by _ middleware(e,请求)

_get_response 185中的文件“c:\Python27\lib\site packages\django\core\handlers\base.py”。response=wrapped_calllback(请求,*callback_args,**callback_kwargs)

testsetView 102中的文件“D:\ Django \ testset creation \ views . py”。返回render(请求,' testset creation/testset view . html ',上下文)

render 30中的文件“c:\ python 27 \ lib \ site-packages \ django \ shortcut s . py”。content = loader . render _ to _ string(模板名称,上下文,请求,使用=使用)

render_to_string 67中的文件“c:\ python 27 \ lib \ site-packages \ django \ template \ loader . py”。template = get_template(模板名称,使用=使用)

get_template 21 中的文件“c:\Python27\lib\site-packages\django\template\loader.py”。返回engine.get_template(template_name)

get_template 39中的文件“c:\ python 27 \ lib \ site-packages \ django \ template \ backends \ django . py”。返回模板(self . engine . get _ Template(Template _ name),self)

文件"c:\Python27\lib\site-packs\django\模板\engine.py"get_template160.模板,源=self.find_template(template_name)

find_template 134中的文件“c:\ python 27 \ lib \ site-packages \ django \ template \ engine . py”。name,template_dirs=dirs,skip=skip

文件"c:\Python27\lib\site-pack\django\模板\loaders\base.py"在get_template44.内容,来源,origin.template_name,self.engine,

init 191 中的文件“c:\Python27\lib\site-packages\django\template\base.py”。自节点列表 = self.compile_nodelist()

compile_nodelist 233 中的文件“c:\Python27\lib\site-packages\django\template\base.py”。返回解析器解析器()

解析 518 中的文件“c:\Python27\lib\site-packages\django\template\base.py”。引发自我错误(标记,e)

异常类型:TemplateSyntaxError位于/Exception Value:无法分析“{{”中的剩余项:“{}”

共有2个答案

鲁宏爽
2023-03-14

为了直接回答您的问题,在默认的Django模板引擎中,当模板变量在条件语句中使用时,不需要将它们用花括号括起来。因此,只需移除支架:

{% if forloop.counter <=  preSelect  %}
    <td><input type="checkbox" name="checks" id="1" value={{ row.0 }} checked/></td>
{% else %}
   <td><input type="checkbox" name="checks" id="1" value={{ row.0 }} /></td>
{% endif %}
汤承允
2023-03-14

在Jinja中,使用{%%}标记时,不要将变量放在{{}}内

{% if x > y %}
    # Do something
{% endif %}

因此,您案例中的代码将是

{% if forloop.counter <= preSelect %}
    # Do Something
{% endif %}
 类似资料:
  • 问题内容: 我想在AngularJS模板中做一个条件。我从Youtube API获取视频列表。某些视频的比例为16:9,有些视频的比例为4:3。 我想要这样的条件: 我正在使用迭代视频。不知道该如何应对这种情况: 在范围内添加功能? 是否在模板中? 问题答案: Angularjs(低于1.1.5版)不提供此功能。以下是您要达到的目标的几种选择: ( 如果您使用的是1.1.5或更高版本,请跳至下面的

  • 我想在AngularJS模板中做一个条件。我从Youtube API获取一个视频列表。视频有的比例为16:9,有的比例为4:3。 我想提出这样一个条件: 我正在使用迭代视频。我不知道该怎么处理这种情况: 是否在作用域中添加函数? 是否在模板中执行?

  • 问题内容: 我正在寻找某种if语句来控制不同元素的状态。 我已经尝试了以下内容,但无法编译 问题答案: LESS具有用于mixin的保护表达式,而不是单个属性。 因此,您将创建一个像这样的mixin: 并通过调用或(或完全不调用)将其打开或关闭。

  • 问题内容: 如何在JSON中使用if语句这是代码:............................................... .................................................................. 这是必需的结果,如下所示: 实际上,这种方式是错误的,并且会导致JavaScript语法错误。 问题答案: 那是普通的J

  • 我用JSX呈现以下HTML 在JSX中,我有 并返回 这很好,但现在我尝试在模板文字中添加条件,以仅在值存在时显示属性值对。 我尝试了许多变体,包括: 条件呈现: 它显示值,但返回条件语句语法,而不是对其进行处理。 我怎样才能使这个条件起作用?我必须为每一个添加条件。

  • 我正在使用做类似“语法分析器”的事情,使用(常规表达式)。 我只想检查基本操作的有效语法(如|-|*|/|(|))。用户将字符串(用键盘)粘贴到磁带上,我用regex对其进行验证。但我不知道如何在if语句中使用regex。我想要的是:如果用户带给我的字符串不正确(或者没有使用regex检查),请打印类似“inavlid string”的内容,如果正确,请打印“Valid string”。 我尝试过