使用此代码:
{% for o in [1,2,3] %}
<div class="{% cycle 'row1' 'row2' %}">
{% cycle 'row1' 'row2' %}
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我得到一个TemplateSyntaxError:
Could not parse the remainder: '[1,2,3]' from '[1,2,3]'
Run Code Online (Sandbox Code Playgroud)
有没有办法在模板中构建列表?
摘要:
我应该如何引用django模板中把手 - 部件中的静态文件?如果我使用verbatim标签,我可以使用把手,但是我不能使用django的static标签.
细节
在将应用程序转换为Django时,我遇到了一个handelbars.js用于呈现ajax-call-results的部分.通过,其中包括" Django模板中的Handlebars.js ",我发现了{% verbatim %}标签.
一个简单的把手就可以正常工作.但我也有一个部分,根据结果动态显示图像,看起来像这样:
<img src="path/{{ result }}.png">
Run Code Online (Sandbox Code Playgroud)
现在虽然我可以手动设置路径,但是我相信Django最好引用你的静态文件,如下所示:
<img src="{% static 'path/file.png' %}">
Run Code Online (Sandbox Code Playgroud)
static_url不建议只获得常量,例如参见此博客
因此,除非某人有一个真正令人信服的理由来解决它,否则我认为最好使用该{% static %}方法.
天真的解决方案是将两种技术结合起来,并逐字地用verbatim/endverbatim喷涂模板.除了这看起来丑陋,难以辨认并且从一开始看似乎是一个坏主意的事实之外,它也不起作用.
{% verbatim %}
<!-- handlebars -->
{% endverbatim %}
<img src="{% static 'path{% verbatim %}{{ result }}{% endverbatim %}' %}">
{% verbatim %}
<!-- handlebars -->
{% endverbatim %}
Run Code Online (Sandbox Code Playgroud)
结果是泪流满面
TemplateSyntaxError at/
无法解析余数:''path {%'from''path {%'
有可能在后端生成正确的静态URL,并进行渲染.但是后端不应该知道我们想要在模板中显示什么图像.
只有解决方案可能是使用'relative'字符串(例如path/result.png)向后端额外调用后端,并要求正确的静态链接?这并不难,但需要额外的电话,但情况并非如此.
那么我该如何正确引用这些静态文件呢?
django templates django-templates django-staticfiles handlebars.js
模型.py:
class MyText(models.Model)
value = models.TextField()
appearance = models.Charfield(
max_length=50,
choices=(
('bold', 'Bold'),
('italic', 'Italic'),
)
)
Run Code Online (Sandbox Code Playgroud)
目的:
a_lot_of_text = MyText(value='a lot of text', appearance='bold')
Run Code Online (Sandbox Code Playgroud)
我将这个对象通过contextin传递views.py到 HTML 模板中。我想检查(在 HTML 中)有什么样的外观a_lot_of_text,并使用 certanclass作为其<div>元素。换句话说,我想得到这样的东西:
mytemplate.html(伪代码):
<style>
bold_class {...}
italic_class {...}
</style>
{% if object.appearance == 'bold' %}
{% somehow i will use 'bold_class' %}
{% elif object.appearance == 'italic' %}
{% somehow i will use 'italic_class' %}
{% endif %}
{% for word …Run Code Online (Sandbox Code Playgroud)