Google app engine 如何在模板中使用webapp2.uri_?
webapp2说它是一个“可以传递到模板的独立uri_版本”,听起来很完美。当我将其传递给Django模板渲染器时,如下所示:Google app engine 如何在模板中使用webapp2.uri_?,google-app-engine,django-templates,webapp2,Google App Engine,Django Templates,Webapp2,webapp2说它是一个“可以传递到模板的独立uri_版本”,听起来很完美。当我将其传递给Django模板渲染器时,如下所示: import webapp2 from google.appengine.ext.webapp import template self.response.out.write(template.render(path, { 'webapp2': webapp2 })) 然后把这个放到模板里 Please <a href="{{ webapp2.uri_f
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>.
请。
应用程序引擎1.7.0说
TemplateSyntaxError:无法分析来自“webapp2.uri”for('contact')的余数:“('contact')”
如果我改为
Please <a href="{{ webapp2 }}">send us your feedback</a>.
请。
它表明
模块%20%27webapp2%27%20来自%20%27/usr/local/google\u appengine/lib/webapp2/webapp2.pyc%27%
所以我知道webapp2正在进入模板
如何使这件事正常工作?
google.appengine.ext.webapp.template
是django模板,但您的模板标记示例取自Jinja2
有关webapp2+Jinja2的示例用法,请参见本页:
一旦您成功地呈现了一个简单的模板,请将'uri_for':webapp2.uri_for
添加到上下文中,或者更好的是,将其添加到jinja2 globals中
因此,对于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' %}
有关详细信息,请参见:
也许可以像jinja2(我知道的方式)那样将其设置为全球?不,那是Django模板。Django和Jinja非常接近,但并不相同。在Django中使用参数进行函数调用时,您不会像在示例
{{{webapp2.uri_for('contact')}}
中那样,因此我假设(您希望使用Jinja2模板)。如果要在Django模板中使用webapp2.uri_,则可能需要创建一个自定义标记,与内置的url
非常相似: