アプリで get_absolute_url 定義を更新していたところ、何らかの理由で機能しなくなりました。その理由を正確に把握することはできませんでした。さらに奇妙なことに、ローカル マシンではすべて正常に動作しますが、サーバー (Webfaction) では動作しません。
機能した元のコードは次のとおりです。
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 を使用します。
ご協力いただきありがとうございます。
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'),
...
)