如何在django模板中插入文本文件的内容?

时间:2015-12-28 10:14:28

标签: python html django html5 python-2.7

Django 1.7。我需要在django模板中插入模型中的文本文件内容。重要的是它必须是文件而不是模型的文本字段。 有办法吗? 这是我的模特:

class Model1(models.Model):
   file1 = FilerFileField(null=True, blank=True)
   file2 = FilerFileField(null=True, blank=True)

我尝试了{%include%}标记,但它无法正常工作。

2 个答案:

答案 0 :(得分:2)

{% include %}用于包含模板(将在settings.TEMPLATE_DIRS中搜索),因此毫不奇怪它不起作用。

主要是,您必须从Python代码中读取文件并将其传递给模板的上下文。这里有三种可能的解决方案:

1 /为模型添加方法以获取FilerFileField的内容

2 /编写一个自定义模板过滤器(或标签),它接受FilerFileField并返回文件的内容

3 /阅读视图中的FilerFileField内容并将其添加到上下文

答案 1 :(得分:1)

标记包含不是要将模型中的内容插入到模板中。是关于插入指定模板的内容。您需要编写自定义模板过滤器,它将读取您的文件内容并将其返回到模板中:

from django import template

register = template.Library()

@register.filter
def print_file_content(f):
    try:
        return f.read()
    except IOError:
        return ''

并将其用于模板中:

<div>{{ object.file1|print_file_content }}</div>

或者您可以通过模板上下文传递它。然后只需将文件内容读入您的视图,并将此内容添加到模板上下文字典中。