【问题标题】:webapp2 - How to reverse URL in templates?webapp2 - 如何在模板中反转 URL?
【发布时间】:2012-02-09 18:49:27
【问题描述】:

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

我有这些处理程序:

  • ViewHandler:将显示单个汽车的视图,包括其所有 信息(发动机、年份、品牌、型号等)
  • ListHandler:将显示应用程序中的所有汽车,并带有 链接到查看页面。

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

我可以在模板中这样做:

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

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

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

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

非常感谢!

【问题讨论】:

标签: python google-app-engine web-applications webapp2


【解决方案1】:

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')

【讨论】:

猜你喜欢
  • 2020-07-07
  • 2012-01-04
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2013-10-02
  • 1970-01-01
相关资源
最近更新 更多