2012-07-30 26 views
2

我正在實現一個目錄服務,正如你所知,列出的URL出現在很多地方。我知道使用{% url %}標籤,它仍然不是防彈像全球上市URL結構發生變化的情況下,說我有{% url id=listing.id %},不得不蛞蝓添加到URL像{% url id=listing.id slug=listing.slug %}Django如何定義公共url

雖然全局搜索&取而代之的是一種選擇,但我很好奇,如果有一個規範的方式 來解決這個問題。

目前我的做法是有一個listingurl.html其中只有{% url id=listing.id slug=listing.slug %}何地需要有URL將只包含listingurl.html,但我不知道,如果實現自定義過濾器會更有效?

回答

2

不是100%肯定這工作,如果它是最優雅的解決方案:

some_template.html

{% include 'listing.html' with url_thing %} 

listing.html

{% url url_thing id=object.id %} 
+0

這是我目前的方法,以及 – 2012-07-30 20:20:03

+0

+1保證別人會照着做。 – 2012-08-01 01:06:34

1

來處理它恕我直言,最好的辦法是爲您的模型添加一個get_absolute_url方法。然後,而不是工作有關模板扭轉網址,你可以調用這個方法:

@models.permalink 
def get_absolute_url(self): 
    return ('listing_view_name', {'id': self.id, 'slug': self.slug}) 

然後:

<a href="{{ listing.get_absolute_url }}">{{ listing }}</a> 
+0

我聽說過get_absolute_url,我必須擁有這個方法名嗎?這是一種標準嗎? – 2012-07-31 08:24:34

+1

是的,這是慣例。 Django管理員在編輯對象時會特別顯示站點鏈接的視圖,如果它有此方法的話。我也看到了一些第三方應用程序,如果它存在使用它。 – 2012-07-31 14:34:32

+0

嗯,只是想到了一件事情,如果我想要通過url進行查詢參數呢? – 2012-08-01 22:14:42