2013-02-19 99 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])