我的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已安装的应用程序: [&#39; django.contrib.admin&#39;,&#39; django.contrib.auth&#39;, &#39; django.contrib.contenttypes&#39;,&#39; django.contrib.sessions&#39;, &#39; django.contrib.messages&#39;,&#39; django.contrib.staticfiles&#39;, &#39; testsetcreation&#39;]已安装的中间件: [&#39; django.middleware.security.SecurityMiddleware&#39 ;, &#39; django.contrib.sessions.middleware.SessionMiddleware&#39 ;, &#39; django.middleware.common.CommonMiddleware&#39 ;, &#39; django.middleware.csrf.CsrfViewMiddleware&#39 ;, &#39; django.contrib.auth.middleware.AuthenticationMiddleware&#39 ;, &#39; django.contrib.messages.middleware.MessageMiddleware&#39 ;, &#39; django.middleware.clickjacking.XFrameOptionsMiddleware&#39;]
模板错误:在模板中 d:\ Django的\ testsetcreation \模板\ testsetcreation \ testsetView.html, 第61行的错误无法解析余数:&#39; {{&#39;来自&#39; {{&#39; 51 :评论52:
软件版本53:硬件版本
54:ABP 55:
项目56:57:
58:59:{%for row in 行%} 60:61:{% if forloop.counter&lt; = {{preSelect}}%} 62:
63:{%else%} 64:
65:{%endif%} 66:
{{row.1}} 67:{{row.2}} 68:69:
70:{{ row.3}} 71:回溯:
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ core \ handlers \ exception.py&#34; 在内心 39. response = get_response(request)
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ core \ handlers \ base.py&#34;在 _get_response 187. response = self.process_exception_by_middleware(e,request)
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ core \ handlers \ base.py&#34;在 _get_response 185. response = wrapped_callback(request,* callback_args,** callback_kwargs)
文件&#34; D:\ Django \ testsetcreation \ views.py&#34;在testsetView中 102. return render(request,&#39; testsetcreation / testsetView.html&#39;,context)
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ shortcuts.py&#34;在渲染中 30. content = loader.render_to_string(template_name,context,request,using = using)
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ template \ loader.py&#34;在 render_to_string 67. template = get_template(template_name,using = using)
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ template \ loader.py&#34;在 get_template 21. return engine.get_template(template_name)
文件 &#34; C:\ Python27 \ LIB \站点包\ Django的\模板\后端\ django.py&#34;在 get_template 39.返回模板(self.engine.get_template(template_name),self)
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ template \ engine.py&#34;在 get_template 160. template,origin = self.find_template(template_name)
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ template \ engine.py&#34;在 find_template 134. name,template_dirs = dirs,skip = skip,
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ template \ loaders \ base.py&#34; 在get_template中 44. contents,origin,origin.template_name,self.engine,
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ template \ base.py&#34;在 的初始化 191. self.nodelist = self.compile_nodelist()
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ template \ base.py&#34;在 compile_nodelist 233. return parser.parse()
文件&#34; c:\ Python27 \ lib \ site-packages \ django \ template \ base.py&#34;在解析 518.提升self.error(令牌,e)
异常类型:TemplateSyntaxError at / Exception值:不能 解析剩余部分:&#39; {{&#39;来自&#39; {{&#39;
答案 0 :(得分:3)
当你使用{%%}标记时,不要把变量放在{{}}
中{% if x > y %}
# Do something
{% endif %}
因此,您案例中的代码将是
{% if forloop.counter <= preSelect %}
# Do Something
{% endif %}
答案 1 :(得分:0)
要直接回答您的问题,在默认的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 %}