在django模板中填充文件

时间:2018-09-26 19:37:02

标签: django django-templates

Django可以轻松地用数据库中模型的数据填充HTML模板-但最近我遇到了几种情况,我想用其他文件的数据填充模板。 br /> 在这种情况下,我试图为项目生成自己的文档。最初,我只是将所有内容写到一个大文件中,但这显然很麻烦,而且很重复。相反,我会很整洁地拥有某种文件系统,其中每个文件夹是文档中的一个部分,每个子文件夹是一个子部分,依此类推。

Django可以这样做吗?

我知道实现此目的的一种方法是将文件链接到数据库对象,然后遍历模板中的这些对象。我并不热衷于此,因为我希望任何更改/新文档文件立即显示在页面中,而不必在数据库中进行编辑。

我唯一想到的另一种方法是浏览文件夹,在加载页面时将其内容添加到页面上下文中。对我来说,这似乎太过分了,我想象会在文件内容中使用编码的HTML产生问题。

这就是说:如果有一种优雅的方式来做这两种事情,或者完全不同的方法,那我真是耳目一新。
干杯


顺便说一句,我没有为此使用任何markdown语法-仅用于文档页面的纯HTML。

1 个答案:

答案 0 :(得分:0)

视图不必从数据库返回对象。它可以返回任何Python数据结构,无论它们来自何处:

def my_view(request):
    context = {}
    with open('foo.txt', 'r') as f:
         lines = []
         for line in f:
            # do some file processing or something
            lines.append(line)
         context['foobar'] = lines
    return TemplateResponse(request, 'my_template.html', context) 

模板上下文将包含foo.txt中的行的列表,您可以像遍历其他Python对象一样对其进行迭代。

相关问题