我們在很久以前就決定在我們的Django項目中使用Mako模板。我們也支持Django模板,因爲很多可重用的應用程序(顯然)都假定Django模板可用。我發現可以從Mako渲染Django模板,但是我一直無法找到一種方法讓它以相反的方式工作。我怎樣才能得到一個Django模板呈現在一個Mako模板中?
我剛剛將django-articles添加到了我們的應用程序列表中,並且它使用了Django模板。它假定base.html
文件是一個被覆蓋的Django模板。不幸的是,我們的主站點是使用Mako構建的。我還無法找到Django模板的一個乾淨的方式,以自己在Mako內的host
。
我想我想要的是一個模板標籤,它會向Mako發出請求並要求'嵌入'。
我們真子模板所有正在執行以下操作:
<%inherit file="mako/base.html"/>
我要的是能夠從Django模板做這樣的事情:
{% render_in_mako 'mako/base.html' 'body' %}
隨着`鯖以下/base.html':
</head>
<body>
<%include file="header.html" />
${next.body()}
</body>
</html>
有沒有人有過這樣做?我對寫模板標籤不是很熟悉。你認爲這可以做到嗎?另一種方法可能是重寫所有Mako中的模板,這根本不會吸引我。模板標籤對於我認爲使用Mako的很多項目來說是非常有用的。
感謝您的回覆。 Jinja和Mako有點類似,我相信。我所指的body參數是Mako模板中的函數調用。在Mako中,這隻意味着'渲染派生模板主體'。我想我需要再看看Mako,看看是否可以使用python函數調用來提供文本塊(html)以及用作基礎的模板。我暫時把這件事擱置一旁,但如果我能做到這一點,我會在這裏發佈一個答案。歡呼輸入。 – 2011-04-10 11:17:34
@JoshSmeaton,謝謝你的澄清。我認爲你正在尋找的功能是['mako.template.Template'](http://www.makotemplates.org/docs/usage。html#basic-usage),它將模板作爲參數並返回一個'Template'對象。這個對象有一個'render()'方法,用給定的上下文參數呈現模板。我現在唯一關心的是在模板被渲染時,'body()'函數是否默認執行。如果我得到一個工作示例,我會在我的答案中發佈代碼。 – 2011-04-10 19:50:34
編輯:我意識到編輯太遲,我沒有你的Mako模板繼承結構的知識,所以我不能真正複製$ {next.body}的行爲。 – 2011-04-10 21:19:20