webapp2 - 如何在模板中反向URL? [英] webapp2 - How to reverse URL in templates?
问题描述
我从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屋!