想這是我的代碼:的Jinja2:默認佈局
from jinja2 import Environment, PackageLoader
def render(path, **kwargs):
env = Environment()
env.loader = PackageLoader('lemma.app.views', '')
template = env.get_template(path)
return str(template.render(**kwargs))
而且這是我的模板:
{% extends "layouts/application.html" %}
{% block content %}
bla
{% endblock %}
有沒有辦法設置佈局在我的代碼,而不是在我的模板,還是應該我在每個模板中都寫了{% extends "layouts/application.html" %}
,就像白癡一樣?
好像你已經回答了你自己的問題。 –
您可以對Environment進行子類化,並將「父級」參數添加到連接{%extends%}聲明的get_template方法中。或者子類PackageLoader,無論你的船是否搖滾。 –
順便說一句,看看[jinja2.BaseLoader](http://jinja.pocoo.org/docs/api/#jinja2.BaseLoader),你可以重寫get_source方法來自動插入{%extends%}標籤。無論如何,這是一個很好的問題,upvoted。 –