2013-10-13 4 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

Это сделал трюк. Благодаря! –

Смежные вопросы