python - 如何解决 Django 中显示“无法解析剩余部分”的 TemplateSyntaxError
问题描述
我正在尝试使用 for 循环重复呈现一段 HTML 代码。但是当我重新加载浏览器时,Django 会抛出 TemplateSyntaxError
<div class="carousel-item active">
{% for number in range(3) %}
<!--Slide {{ number + 1 }}-->
<div class="row">
{% for number in range(6) %}
<!--Slide 1 Col {{ number + 1 }}-->
<div class="col-lg-2">
<div class="card" style="width: 100%;">
<img class="card-img-top" src="..." alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
{% endfor %}
</div>
{% endfor %}
</div>
我希望在 for 循环中重复渲染块,但得到“TemplateSyntaxError at / Could not parse the rest: '(3)' from 'range(3)'”
解决方案
Django 不允许在模板中进行函数调用(带参数)以及下标。理由是业务逻辑不应该是模板的一部分。因此,您可以通过上下文将range(3)
andrange(6)
对象传递给模板。{{ number + 1 }}
也不起作用,因为也不支持此类运算符。
另一种方法是使用Jinja,它是一个模板引擎,允许在模板中使用这种 Python 语法。
由于数字非常小,第三种选择是使用字符串文字代替:
<div class="carousel-item active">
{% for row in '123' %}
<!--Slide {{ row }}-->
<div class="row">
{% for col in '123456' %}
<!--Slide 1 Col {{ col }}-->
<div class="col-lg-2">
<div class="card" style="width: 100%;">
<img class="card-img-top" src="..." alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
{% endfor %}
</div>
{% endfor %}
</div>
推荐阅读
- c++ - C++ 字符串赋值错误。如何为结构指针的字符串成员赋值?
- ios - iOS 14 (Swift) 中奇怪的 MFMailComposeViewController 行为
- postgresql - 默认情况下,postgres 中的主键字段不是 NULL 吗?
- kubernetes - 无法使用 Minikube 在 Windows Home 上的浏览器中访问 Kubernetes Ingress?
- javascript - 为什么钩子的代码(功能)不断渲染?(与类相比)
- visual-studio - Azure DevOps 中的 Docker Compose 构建失败
- scala - Scala 中的局部效果和可变状态与 Cats
- java - 弹性搜索查询不适用于 java 但使用弹性 URI
- amazon-web-services - 输入 S3 listObjectsV2 API 调用的存储桶名称?
- git - git可以更新文件但不跟踪它吗?