webapp2 - 如何在模板中反向URL? [英] webapp2 - How to reverse URL in templates?

查看:100
本文介绍了webapp2 - 如何在模板中反向URL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我有这些处理程序:


  • ViewHandler:将显示一辆单车,所有
    信息(发动机,年份,品牌,型号等)。
  • ListHandler:将显示应用程序中的所有车辆,
    链接到视图页面。



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



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

 < ul> ; 
< a>< 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(),但
没有帮助。



非常感谢!

解决方案

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



以下是上述文章的一个示例:

  app = webapp2.WSGIApplication([
webapp2.Route('/',handler ='handlers.HomeHandler',name =' '',
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-h eading')

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


I'm starting with webapp2. My english is not very good, so i'll use an example to explain my problem: Suppose i'm building an application that will handle cars information.

I've these handlers:

  • ViewHandler: will display a view for a single car, with all of its information (engine, year, brand, model, etc..)
  • ListHandler: will display all the cars in the application, with a link to the view page.

The problem is that i can't build that link to the single view.

I could do this in the template:

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

but don't like that (where's the DRY principle after all?) I was wondering if there's some way to do it similar to django, resolving the URL in the template, like this:

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

Maybe it's not in the template. I've tryed webapp2.url_for() but didn't help.

Thanks a lot!

解决方案

webapp2.uri_for() is your best bet, but you must use it in combination with named routing. You can read more about webapp2 routing in combination with uri_for here: http://webapp-improved.appspot.com/guide/routing.html

Here's an example from the above article of how it might look:

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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆