如何从Django中的模板标签访问静态文件以读取文本文件?

时间:2020-04-30 18:29:06

标签: django django-templates

我正在构建一个系统,该系统要从模板读取文本文件。该文本文件存储在我的静态文件夹中。在我的 app_filters 中,我具有以下功能:

from django import template

register = template.Library()

@register.filter
def print_file_content(file_name):
    try:
        file = open(file_name, 'r')
        return file.read()
    except IOError:
        return ''

在我的模板上,我正在这样做:

{% load static %}
{% load app_filters %}

<div>{{ "{% static 'my_file.txt' %}" | print_file_content }}</div>

我的静态文件夹中有文件:myapp/static/my_file.txt,但是文件读取不正确。并且该部分仍然为空。如何解决此问题?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以这样做,只需读取一个文件并将其保存在变量中,然后将该变量链接到字典中,然后使用Httpresponse或render返回即可。

def read_file(request):
    f = open('path/my_file.txt', 'r')
    file_content = f.read()
    f.close()
    context = {'file_content': file_content}
    return render(request, "index.html", context) or return HttpResponse(file_content, 
    content_type="text/plain")

如果要将文本文件的内容传递给template.html,请将其添加到上下文变量中,然后使用{{file_content}}在模板中访问它。