2013-04-28 82 views
0

models.pyurls.pyviews.pyget_absolute_url()與多個ARGS

我試圖設置get_absolute_url()功能爲Entry類,但失敗了。我已經成功地爲Category類創建了這樣一個函數,只有一個參數,但是我堅持使用多個參數,如Entry類。

目前,點擊

<a href="/blog/{{ entry.get_absolute_url }}/">{{ entry.title }}</a>` 

聯繫,因爲我的索引頁上顯示,只返回下面的網址:

http://127.0.0.1:8000/blog// 

我原本是用來回報沒有扭轉這樣的:

def get_absolute_url(self): 
    return "/%s/%s/%s/" % (self.pub_date.year, self.pub_date.month, self.slug) 

但是,雖然它的工作從index.html與前面提到的href,來回其他頁面(即category.html)這返回了一個URL附加在當前URL上,包括Category類。切換到反向解決了這個問題Category,但我無法讓它爲Entry工作,因爲有多個參數。

請根據需要請求任何其他數據。


編輯:嗯,我已經成功地使其與(原碼)工作:通過category.html改變href

def get_absolute_url(self): 
    return "%s/%s/%s/%s" % (self.pub_date.year, self.pub_date.month, self.pub_date.day, self.slug) 

<a href="http://127.0.0.1:8000/blog/{{ entry.get_absolute_url }}">{{ entry.title }}</a> 

即我加了根http://127.0.0.1:8000,但我仍然無法使它與reverse()一起工作...我試過args,kwargs,其他一些東西......我並不確定reverse()的作用與普通的return不同。它做了一些不同的事情,和以前一樣,當我沒有根目錄使用​​時,從return切換到return reverse()使它工作;儘管我現在已經設法通過將的根添加到return來工作,就像我使用Entry一樣。

回答

0

您可以使用kwargs反向。喜歡的東西:

假設爲博客詳細說明您的URL模式是這樣的:

url(r'^blog/(?P<year>)/(?P<month>)/(?P<slug>[-\w]+)/$', 'details', name='blog_details') 

你可以寫get_absolute_url爲:

def get_absolute_url(self): 
    return reverse('blog_details', kwargs={'year': self.pub_date.year, 
            'month': self.pub_date.month, 
            'slug': self.slug}) 

而當你使用模板使用。

+0

確定嗎?這似乎不適合我。 – 2013-04-28 13:37:05

+0

什麼不起作用?你有沒有改變你的get_absolut_url來使用kwargs的敬畏? – 2013-04-28 14:06:41

+0

是的,我完全按照你寫的那樣做了。 – 2013-04-28 19:47:33