2013-02-19 81 views
2

我一直在尝试Ruby on Rails,真的很喜欢REST风格的URL方法。 现在我正在学习Django,我想创建与Rails一样的嵌套URL。Django的REST风格的URL

可以说,我想这样做:/categories/12/products/13

这就是我想出了,但似乎并没有工作:

url(r'^categories/(?P<category_id>\d+)/products/(?P<product_id>\d+/$)', 'my_app.views.product', name="product"), 

应该如何进行?另外,如何使用url模板助手来创建这种链接?

+0

不熟悉RoR的,我不知道你在问什么,但https://docs.djangoproject.com/en/dev/topics/http/urls/#including-other-urlconfs是否在做你正在寻找的东西? – JeffS 2013-02-19 20:18:28

+0

你说得对。我在正则表达式中犯了一个错误。 \ d +/$)应该是 \ d +)/ $。有用。 – user1121487 2013-02-19 20:56:06

回答

3

结账TastyPie。它是Django的一个REST API,与您在Rails中使用的类似,并且可以让您在没有太多工作的情况下朝着正确的方向前进。

+0

好的,谢谢我会检查出来。因此,做Django URL的“正常”方式不是为了嵌套它们,我认为? – user1121487 2013-02-19 20:15:25

+0

不,在Django中没有资源的概念。 URL是按照最具体的最特定模式的顺序指定的。但是,可以将一个应用的网址中的模式包含在另一个网址中。这可以让你保持干净的URL模式。 – Brandon 2013-02-19 20:22:11

+0

但是我现在设法嵌套URL ...我只是做了一点正则表达式错字。 \ d +/$)应该是 \ d +)/ $ – user1121487 2013-02-19 20:55:15

0

在模板中,你可以使用<a href="{% url product category_id product_id %}">Link title</a>

要在你的Python代码的网址,你可以使用reverse

from django.core.urlresolvers import reverse 

url = reverse('product', args=[category_id, product_id])