2010-09-18 24 views
0

好吧,它終於發生了,我偶然發現了一個問題,沒有任何谷歌的幫助。 (雖然我可能只是在看錯方向,在這種情況下,任何指向正確方向的指針都會很棒)。從模型函數返回一個指定URL的鏈接

我想找到一種方法來從模型的函數返回一個指向url(帶有可變參數)的鏈接。舉例來說,如果我有型號:

class Picture(models.Model): 
    picture_id = models.AutoField(primary_key=True) 
    ... 
    def picture_details(self): 
     return "{%url picture_details " + str(self.picture_id) + " %}" 

我想在模板上建立一個鏈接一個圖片對象「PIC」:

... 
    <a href="{{pic.picture_details}}" > details </a> 
    ... 

鏈接到名爲「網址picture_details'。但是,模板中產生的鏈接是'http:// ..... {%url picture_details x%}'(x是picture_id)。

我明白使用<a href = {% url picture_details pic.picture_id %} />會工作,但是我的情況稍有不同,因爲鏈接是動態構建的圖像映射的一部分。所以,我想圖像映射字符串:

<area shape="some_shape" coords="some_coords" href="{{pic.picture_details}}"/> 

導致鏈接到名爲「picture_details」的說法picture_id的URL。

我希望我能夠清楚地解釋我的問題,但如果需要更多信息,請告訴我。提前爲任何幫助非常感謝,

格爾茨,

馬克

回答

3

你應該在這種情況下使用reverse功能。 Reverse{% url %}模板標籤的視圖副本。

from django.core.urlresolvers import reverse 

class Picture(models.Model): 
    picture_id = models.AutoField(primary_key=True) 
    ... 
    def picture_details(self): 
     return reverse('picture_details', args = [self.picture_id]) 

從文檔:

如果你需要使用類似url模板標籤的東西在你的代碼,Django提供了以下方法(django.core.urlresolvers模塊):

+0

非常感謝Manoj! – 2010-09-18 13:01:03

+0

我一直在想弄清楚'逆向'是什麼,它的一切都開始有意義。再一次,Django文檔是爲了拯救世界免受災難的影響(如果你知道從哪裏開始尋找)。 – 2010-09-18 13:18:57