在django中读取文件并在文件中查找字符串

时间:2014-01-11 22:12:56

标签: django file templates search

我是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()'

它可能是什么,或者我做错了什么?谢谢你提前。

2 个答案:

答案 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 %}

我需要查看你从视图中传递的内容以确定这一点,但如果这没有帮助,我很乐意协助进一步提供更多信息。