我需要生成一些txt文件,用于Django模板的Jinja2会导致模板代码看起来非常混乱,因为我不能在生成的结果中不使用换行符。{% spaceless %}
标记可能会使事情变得更加混乱,因为很难插入所需的空间。
举个例子:
[{% if foo.condition %}x{% else %} {% endif %}] List of requirements fulfilled: {{ foo.requirements_fullfilled }} of {{ foo.num_requirements }} {% for requirement in foo.requirement %}
- {{ requirement.number }}{% if requirement.name %}: {{ solution.exercise.name }}{% endif %}{% endfor %}
请注意-
之前的换行符,这使得列表在每个项目符号之前添加一个换行符,并为所有其他标记添加缺少的换行符,因为它们在输出中可见。
使用无空格可以设置格式,但也可以删除项目符号点之前的换行符。没有spaceless,线条看起来很乱。我还尝试在注解中使用{# #}
和换行符作为变通方法,但是多行注解需要使用{% comment %}
模板标签,它本身有一个非常冗长的名称,结果是,例如:
[{% if foo.condition %}{% comment %}
{% endcomment %}x{% comment %}
{% endcomment %}{% else %}{% comment %}
{% endcomment %} {% comment %}{# Attention: Here is a space character between the comment tags! #}
{% endcomment %}{% endif %}]
这只是生成空间或x
的部分。当然,我可以在这里写一个“xiftrue”过滤器,但这对剩下的长行没有帮助。
1条答案
按热度按时间mklgxw1f1#
将逻辑从模板移到Python视图中。使用基于类的视图,您可以执行以下操作:
然后模板就变成了
或者你可以在Python中做更多的工作,简单地用一个变量替换模板中的任何逻辑。
根据模板的其余部分和需求,我可能完全不需要呈现,而只是构建一组文本行作为Python字符串列表,然后将其作为文本响应返回