我有一个txt文件,我在views.py中加载并做了一些工作(现在它只是按段落分割,但稍后会有更多工作完成)。
在本文档中,我有一些Django模板标签{{user.firstName}}等。
我将此文档发送到模板以添加其HTML等。但它不会呈现标记。我知道Django加载模板一次并将其全部存储在树中以提高速度。我找不到解决方法。我可以预先加载文档,然后让解析器运行吗?我可以在view.py中添加HTML标记并在解析之前将其发送到模板吗?
任何想法或想法都会很棒。
以下是我的代码:
View.py
class DocumentReview(TemplateView):
template_name = 'paperwork\document.html'
def get_context_data(self, **kwargs):
context = super(DocumentReview, self).get_context_data(**kwargs)
context['user'] = {'firstName': 'x', 'lastName': 'y'}
context['document'] = self.get_document()
return context
def get_document(self):
module_dir = os.path.dirname(__file__) # get current directory
file_path = os.path.join(module_dir, 'documents\sample.txt')
document = {}
with open(file_path, 'r') as fp:
data = fp.read()
document = data.split("\n\n")
return document
这是sample.txt:
Hello {{ user.firstName }} {{ user.lastName }},
This is a sample txt file.
这是document.html
{% for para in document %}
<p>{{ para }}</p>
{% endfor %}
答案 0 :(得分:1)
您必须使用template loader模块,并更改get_document
功能:
from django.template.loader import render_to_string
def get_document(self, context):
data = render_to_string('documents\sample.txt', context)
return data.split("\n\n")
你这么称呼它:
context['document'] = self.get_document(context)
在此之前,您必须修改settings.TEMPLATES
,以便加载程序找到您的文件documents\sample.txt
。