我是django的新手,我正在尝试在html模板中执行django代码,但它显示相同的错误,我不知道如何使其工作。我试图读取一些文件并找到包含该字符串的文件。这是模板中的代码:
{% if documents %}
<ul>
{% for document in documents %}
{% if 'TheString' in open('document.docfile.url').read() %}
<li><a href="{{ document.docfile.url }}">{{ document.docfile.name }}</a></li>
{% else %}
<li></li>
{% endif %}
{% endfor %}
</ul>
{% else %}
<p>No documents available.</p>
{% endif %}
错误如下:
/ subir /
中的TemplateSyntaxError无法解析余数:'('document.docfile.url')。read()'from'open('document.docfile.url')。read()'
它可能是什么,或者我做错了什么?谢谢你提前。
答案 0 :(得分:1)
您的问题是您尝试在模板中使用Python代码,例如open()
来电。
Django模板不能那样工作 - 你只能使用一组非常有限的语法,而且语法与Python不同。
{{ }}
和{% %}
内的所有内容都需要是特殊的Django模板语法,而不是Python代码。
有关详细信息,请参阅Django Template language documentation。
答案 1 :(得分:0)
您无法在模板中直接使用此类代码,请参阅documentation了解可用的模板代码和过滤器。根据您在view.py中发布的代码我可以告诉您,您需要这样的内容:
docs=[]
for document in documents:
if 'TheString' in open('/path/to/document').read():
docs.append(document)
将文档传递给模板后,您可以在模板中执行此操作:
{% for doc in docs %}
<li><a href="{{ document.docfile.url }}">{{ document.docfile.name }}</a></li>
{% empty %}
<p>No documents available.</p>
{% endfor %}
我需要查看你从视图中传递的内容以确定这一点,但如果这没有帮助,我很乐意协助进一步提供更多信息。