首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Django中解析之前预先加载模板和模板变量

在Django中解析之前预先加载模板和模板变量
EN

Stack Overflow用户
提问于 2017-04-19 22:20:08
回答 1查看 781关注 0票数 0

我在views.py中加载了一个txt文件,并在上面做了一些工作(现在它只是按段落划分,但稍后会有更多的工作完成)。

在本文档中,我有一些Django模板标记{{ user.firstName }}等等。

我将此文档发送到模板以获得它的HTML添加,等等。但是它不会呈现标签。我知道Django只加载了一次模板,并将其存储在一棵树中以加快速度。我只是找不到解决办法。我可以预加载文档,然后运行解析器吗?我可以在view.py中添加HTML标记并在解析之前将其发送到模板中吗?

任何想法或想法都会很棒。

下面是我的代码:

View.py

代码语言:javascript
复制
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:

代码语言:javascript
复制
Hello {{ user.firstName }} {{ user.lastName }},

 This is a sample txt file.

这是document.html

代码语言:javascript
复制
      {% for para in document %}
                <p>{{ para }}</p>
                {% endfor %}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-20 08:38:54

您必须使用模板加载器模块,并更改get_document函数:

代码语言:javascript
复制
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")

你这样称呼它:

代码语言:javascript
复制
context['document'] = self.get_document(context)

在此之前,您必须修改settings.TEMPLATES,以便加载程序找到文件documents\sample.txt

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43507048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档