包括带过滤的纯文本文件

时间:2014-05-14 13:07:19

标签: python regex jinja2

因此,我们已经有了要包含在模板中的文本文件,这些文件包含了我们想要同时过滤掉的大量垃圾。

我们说过滤应该或多或少基于此:

with open(file) as f:
    data = f.read()
    result = re.findall('[^!]\s*(\w{4}[^pP]:[^\n]+\;)', data)

我已经看过这个例子了: Insert static files literally into Jinja templates without parsing them

import jinja2

def include_file(name):
    return jinja2.Markup(loader.get_source(env, name)[0])

loader = jinja2.PackageLoader(__name__, 'templates')
env = jinja2.Environment(loader=loader)
env.globals['include_file'] = include_file

def render():
    return env.get_template('page.html').render()

if __name__ == '__main__':
    print render()

问题是:在我的案例中,include_file函数应该包含什么内容?

1 个答案:

答案 0 :(得分:0)

你应该有这样的东西......

def include_file(self, name):
    with open(file) as f:
        data = f.read()
        result = re.findall('[^!]\s*(\w{4}[^pP]:[^\n]+\;)', data)
    return jinja2.Markup(result)

env.globals['include_file'] = include_file

然后你的模板看起来像这样......

{{ include_file('file.txt') }}

这篇文章有助于解释全局变量。

http://modular.math.washington.edu/home/wstein/www/home/bjarke/sage-4.4.4/local/LIB/python/site-packages/Jinja-1.2-py2.6-linux-x86_64.egg/docs/html/objects.html

希望这有帮助!