2017-04-19 100 views
0

我有一个txt文件,我加载了views.py并做了一些工作(现在它只是按段落分割,但稍后会有更多工作完成)。在Django解析之前预加载模板和模板变量

本文档中,我有一些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 %} 

回答

1

你必须使用th Ë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