webapp2说webapp2.uri_for是一个“可以传递给模板的独立uri_for版本”。听起来很完美。当我将它传递给Django模板渲染器时,如下所示:
import webapp2
from google.appengine.ext.webapp import template
self.response.out.write(template.render(path,
{ 'webapp2': webapp2 }))
并将其放入模板
Please <a href="{{ webapp2.uri_for('contact') }}">send us
your feedback</a>.
app engine 1.7.0说
TemplateSyntaxError:无法解析余额:'('contact')'来自'webapp2.uri_for('contact')'
如果我改为
Please <a href="{{ webapp2 }}">send us your feedback</a>.
显示
模块%20%27webapp2%27%20from%20%27 / USR /本地/ google_appengine / LIB / webapp2的/ webapp2.pyc%27%
所以我知道webapp2正在进入模板。
如何让这件事起作用?
答案 0 :(得分:-1)
google.appengine.ext.webapp.template
是一个django模板,但你的模板标记示例来自Jinja2。
有关webapp2 + Jinja2的示例用法,请参阅此页面: http://webapp-improved.appspot.com/api/webapp2_extras/jinja2.html
管理渲染简单模板后,将'uri_for': webapp2.uri_for
添加到上下文中,或者更好的是,将其添加到jinja2全局变量中。
因此,对于Django模板,作为一个原始示例,您可以创建一个简单的标记:
register = template.Library()
@register.simple_tag(name='uri_for')
def webapp2_uri_for(route_name):
return webapp2.uri_for(route_name)
然后在你的模板中使用它:
{% uri_for 'contact' %}
详情请见: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/