2013-10-13 167 views
0

我正在更新應用程序中的get_absolute_url定義,並因某種原因停止工作。一直未能弄清楚爲什麼。更奇怪的是,一切工作正常在我的本地機器上,但不能在服務器上工作(Webfaction)。get_absolute_url停止工作?

原碼,裏面的工作,是:

def get_absolute_url(self): 
    return "/blog/%s/%02d/%02d/%s/" % (self.publication_date.year, self.publication_date.month, self.publication_date.day, self.URL) 

我改變了到:

def get_absolute_url(self): 
    return reverse('blog-post', args=[ 
     self.publication_date.year, 
     self.publication_date.month, 
     self.publication_date.day, 
     self.URL 
     ]) 

它靜靜地失敗。當我點擊在管理環節的「現場查看」,我得到這個錯誤:

Reverse for 'blog-post' with arguments '(2013, 7, 19, 'some-test-slug')' and keyword arguments '{}' not found. 

我試着使用關鍵字參數來代替:

def get_absolute_url(self): 
    return reverse('blog-post', kwargs={ 
     'year': self.publication_date.year, 
     ... 
     }) 

...但是,這並沒有任何影響。

請記住,奇怪的是,在我的本地環境中一切都很好。

使用Django 1.3.7,FWIW。

感謝您的幫助。

這裏的urls.py:

urlpatterns = patterns('blog.views', 
    ... 
    url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[a-zA-Z0-9_.-]+)/$', 'post', name='blog-post'), 
    ... 
) 
+2

向我們展示urls.py文件 – lalo

+0

這裏的urls.py: –

回答

1

沒有urls.py我只能猜測,但最有可能需要兩位數的月份和日期標識,而在某些情況下,你只提供一個數字。無論如何 - 這是您的舊代碼和新代碼get_absolute_url之間的區別 - 在舊代碼月份和日期數字中,如果需要填充0代碼。

試試這個:

def get_absolute_url(self): 
    return reverse('blog-post', args=[ 
     self.publication_date.year, 
     self.publication_date.strftime('%m'), 
     self.publication_date.strftime('%d'), 
     self.URL 
     ]) 
+0

這奏效了。謝謝! –