My views.py提供一个名为“preSelect”的变量,该变量包含一个整数值。
在模板中,我想在if语句中使用该整数来检查当前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-request url:http://127.0.0.1:8000/
django版本:1.10.2 python版本:2.7.11已安装的应用程序:
['django.contrib.admin','django.contrib.auth'
'django.contrib.contenttypes','django.contrib.sessions',
“django.contrib.messages”、“django.contrib.staticfiles”
“testsetcreation”]已安装的中间件:
['django.middleware.security.SecurityMiddleware'
'django.contrib.sessions.middleware.sessionMiddleware',
'django.middleware.common.commonmiddleware',
'django.middleware.csrf.CsrfViewMiddleware'
'django.contrib.auth.middleware.AuthenticationMiddleware'
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xframeoptionsmidleware']
模板错误:在模板中
D:\Django\testsetcreation\templates\testsetcreation\testsetView.html,
第61行出现错误,无法分析剩余部分:'{{'来自'{{'51'
:注释52:
软件版本53:硬件版本
54:abp 55:
项目56:57:
58:59:{%代表行
行%60:61:{%
如果forloop.counter63:{%else%}64:
65:{%endif%}66:
{{row.1}67:{{row.2}
68:69分:
70岁:{{
第3行}}71:
回溯:
文件“c:\ python27\lib\site packages\django\core\handlers\exception.py”
在内部
39岁。response=get_response(请求)
文件“c:\ python27\lib\site packages\django\core\handlers\base.py”
_得到回应
187年。response=self.process_exception_by_中间件(e,请求)
文件“c:\ Python27\lib\site packages\django\core\handlers\base.py”
_得到回应
185年。response=wrapped_callback(请求,*callback_args,**callback_kwargs)
testsetview中的文件“d:\ django\testsetcreation\views.py”
102号。返回render(请求,“testsetcreation/testsetview.html”,上下文)
render中的文件“c:\ Python27\lib\site packages\django\shortcuts.py”
30岁。content=loader.render_to_string(模板名称、上下文、请求、using=using)
文件“c:\ Python27\lib\site packages\django\template\loader.py”
将字符串呈现为
67岁。模板=获取模板(模板名称,使用=使用)
文件“c:\ Python27\lib\site packages\django\template\loader.py”
获取模板
21岁。返回引擎。获取模板(模板名称)
文件
“c:\ Python27\lib\site packages\django\template\backends\django.py”在
获取模板
39岁。返回模板(self.engine.get_template(template_name),self)
文件“c:\ python27\lib\site packages\django\template\engine.py”
获取模板
160个。模板,origin=self.find_template(模板名称)
文件“c:\ python27\lib\site packages\django\template\engine.py”
查找模板
134年名称,template_dirs=dirs,skip=skip,
文件“c:\ python27\lib\site packages\django\template\loaders\base.py”
在获取模板中
44岁。目录,源,源。模板名称,self.engine,
文件“c:\ python27\lib\site packages\django\template\base.py”
初始
191年。self.nodelist=self.compile_nodelist()
文件“c:\ python27\lib\site packages\django\template\base.py”
编译节点列表
233号。返回parser.parse()
parse中的文件“c:\ python27\lib\site packages\django\template\base.py”
518号。引发自身错误(令牌,e)
异常类型:TemplateSyntaxError at/Exception值:无法
分析剩余部分:'{{'来自'{{'
最佳答案
在jinja中,当使用{%}标记时,不要将变量放在{{}中。
示例代码
{% if x > y %}
# Do something
{% endif %}
所以在你的案子里
{% if forloop.counter <= preSelect %}
# Do Something
{% endif %}