webapp2 - 如何反转模板中的URL?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webapp2 - 如何反转模板中的URL?相关的知识,希望对你有一定的参考价值。

我从webapp2开始。我的英语不是很好,所以我将用一个例子来解释我的问题:假设我正在构建一个处理汽车信息的应用程序。

我有这些处理程序:

  • ViewHandler:将显示单个车辆的视图,包含所有信息(引擎,年份,品牌,型号等)。
  • ListHandler:将显示应用程序中的所有汽车,并带有指向视图页面的链接。

问题是我无法建立到单一视图的链接。

我可以在模板中执行此操作:

<ul> 
  <li><a href='/cars/view/{{car.id}}'>{{car.model}}</a></li> 
</ul> 

但是不喜欢那个(毕竟干嘛原则在哪里?)我想知道是否有某种方法可以做到类似于django,解析模板中的URL,如下所示:

<ul> 
  <li><a href='{% url cars.view car.id}'>{{car.model}}</a></li> 
</ul> 

也许它不在模板中。我尝试过webapp2.url_for()但没有帮助。

非常感谢!

答案

webapp2.uri_for()是您最好的选择,但您必须将其与命名路由结合使用。您可以在这里结合uri_for阅读有关webapp2路由的更多信息:http://webapp-improved.appspot.com/guide/routing.html

以上是上面文章中的示例:

app = webapp2.WSGIApplication([
    webapp2.Route('/', handler='handlers.HomeHandler', name='home'),
    webapp2.Route('/wiki', handler=WikiHandler, name='wiki'),
    webapp2.Route('/wiki/<page>', handler=WikiHandler, name='wiki-page'),
])

# /
uri = uri_for('home')

# http://localhost:8080/
uri = uri_for('home', _full=True)

# /wiki
uri = uri_for('wiki')

# http://localhost:8080/wiki
uri = uri_for('wiki', _full=True)

# http://localhost:8080/wiki#my-heading
uri = uri_for('wiki', _full=True, _fragment='my-heading')

# /wiki/my-first-page
uri = uri_for('wiki-page', page='my-first-page')

# /wiki/my-first-page?format=atom
uri = uri_for('wiki-page', page='my-first-page', format='atom')

以上是关于webapp2 - 如何反转模板中的URL?的主要内容,如果未能解决你的问题,请参考以下文章

如何在模板中使用 webapp2.uri_for?

如何对从 webapp2 请求处理程序传递给 jinja2 模板的模板变量进行单元测试

有没有办法在 Google App Engine 的 Webapp2 框架中使用 Django 模板

第二十三节 在模板中使用url标签反转地址

webapp2 + jinja2:如何让 uri_for() 在 jinja2-views 中工作

GAE Django webapp2 模板渲染