Python 使用Jinja2进行简单模板时设置基本文件路径
我使用Jinja纯粹是为了创建模板。 以下是我的计划: 页面1.html 目录结构如下所示: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时,我得到了以下消
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)