2024-09-19 23:45:18 发布
网友
Django 1.7版。我需要在django模板中插入来自模型的文本文件的内容。重要的是,它必须是一个文件,而不是模型的文本字段。 有办法吗? 这是我的模型:
class Model1(models.Model): file1 = FilerFileField(null=True, blank=True) file2 = FilerFileField(null=True, blank=True)
我尝试了{%include%}标记,但它不起作用。在
{% include %}用于包含模板(将在settings.TEMPLATE_DIRS中搜索),因此它不起作用并不奇怪。在
{% include %}
settings.TEMPLATE_DIRS
主要是,您必须从Python代码中读取文件并将其传递到模板的上下文中。这里有三种可能的解决方案:
1/向模型中添加方法以获取FilerFileField的内容
2/编写一个自定义模板过滤器(或标记),它接受FilerFileField并返回文件的内容
3/在视图中读取FilerFileField的内容并将其添加到上下文中
Taginclude并不是要将模型中的内容插入到模板中。有关插入指定模板的内容。您需要编写自定义模板筛选器,该筛选器将读取文件内容并将其返回到模板中:
from django import template register = template.Library() @register.filter def print_file_content(f): try: return f.read() except IOError: return ''
并将其用于模板中,如:
或者您可以通过模板上下文传递它。然后只需将文件内容读入视图并将此内容添加到模板上下文字典中。在
{% include %}
用于包含模板(将在settings.TEMPLATE_DIRS
中搜索),因此它不起作用并不奇怪。在主要是,您必须从Python代码中读取文件并将其传递到模板的上下文中。这里有三种可能的解决方案:
1/向模型中添加方法以获取FilerFileField的内容
2/编写一个自定义模板过滤器(或标记),它接受FilerFileField并返回文件的内容
3/在视图中读取FilerFileField的内容并将其添加到上下文中
Taginclude并不是要将模型中的内容插入到模板中。有关插入指定模板的内容。您需要编写自定义模板筛选器,该筛选器将读取文件内容并将其返回到模板中:
并将其用于模板中,如:
^{2}$或者您可以通过模板上下文传递它。然后只需将文件内容读入视图并将此内容添加到模板上下文字典中。在
相关问题 更多 >
编程相关推荐