Django 1.7。我需要在django模板中插入模型中的文本文件内容。重要的是它必须是文件而不是模型的文本字段。 有办法吗? 这是我的模特:
class Model1(models.Model):
file1 = FilerFileField(null=True, blank=True)
file2 = FilerFileField(null=True, blank=True)
我尝试了{%include%}标记,但它无法正常工作。
答案 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>
或者您可以通过模板上下文传递它。然后只需将文件内容读入您的视图,并将此内容添加到模板上下文字典中。