Python 使用Jinja2进行简单模板时设置基本文件路径

Python 使用Jinja2进行简单模板时设置基本文件路径,python,jinja2,templating,Python,Jinja2,Templating,我使用Jinja纯粹是为了创建模板。 以下是我的计划: 页面1.html 目录结构如下所示: current_dir |___ code_to_make_template.py |___ html |_ src |_ templates |_ base.html |_ page1.html 但当我运行code_to_make_template.py时,我得到了以下消

我使用Jinja纯粹是为了创建模板。 以下是我的计划:

页面1.html

目录结构如下所示:

 current_dir
   |___ code_to_make_template.py
   |___ html
         |_ src
             |_ templates
                  |_ base.html
                  |_ page1.html
但当我运行code_to_make_template.py时,我得到了以下消息:

jinja2.exceptions.TemplateNotFound: base.html

正确的方法是什么?

我会这样做:

import os
import webapp2
import jinja2

template_dir = os.path.join(os.path.dirname(__file__), 'html/src/templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir),
                               autoescape = True)

def render_str(template, **params):
    t = jinja_env.get_template(template)
    return t.render(params)

class MainHandler(webapp2.RequestHandler):
    def write(self, *a, **kw):
        self.response.out.write(*a, **kw)

    def render_str(self, template, **params):
        return render_str(template, **params)

    def render(self, template, **kw):
        self.write(self.render_str(template, **kw))
然后在渲染类中继承该类,并执行以下操作:

class PageOne(MainHandler):

    def get(self):
        self.render('page1.html')


app = webapp2.WSGIApplication([('/page_one', PageOne)
                               ],debug=True)

嗯,试试这个:template_dir=os.path.joinos.path.dirname_文件_文件,'html/src/templates'| jinja_env=jinja2.Environmentloader=jinja2.filesystemloader模板_dir,autoescape=True@Kris:是的,它能工作。谢谢。我发现这个解决方案对于这样简单的OP问题来说太长了。
jinja2.exceptions.TemplateNotFound: base.html
import os
import webapp2
import jinja2

template_dir = os.path.join(os.path.dirname(__file__), 'html/src/templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir),
                               autoescape = True)

def render_str(template, **params):
    t = jinja_env.get_template(template)
    return t.render(params)

class MainHandler(webapp2.RequestHandler):
    def write(self, *a, **kw):
        self.response.out.write(*a, **kw)

    def render_str(self, template, **params):
        return render_str(template, **params)

    def render(self, template, **kw):
        self.write(self.render_str(template, **kw))
class PageOne(MainHandler):

    def get(self):
        self.render('page1.html')


app = webapp2.WSGIApplication([('/page_one', PageOne)
                               ],debug=True)