我目前正在阅读Practical Django Projects,在Django管理界面中,输入信息时可以选择“在网站上查看”。
但在完成本书的第5章后,我开始修改管理界面,发现点击此链接与我的类别应用程序无法正常工作,因为它没有将博客附加到URL,因此它们显示如下:
http://127.0.0.1:8000/categories/test-cat
他们应该是这样的......
http://127.0.0.1:8000/weblog/categories/test-cat
然而,在我的参赛作品模型中,它们的效果非常好。所以我试着看看Entries应用程序中的内容是什么,以找出类别应用程序中的错误。
我一直在寻找大约2个小时,我无法确定Django在哪里做到这一点。我甚至从网上复制了源代码,虽然其中一些似乎丢失了。
我的get_absolute_url()如下:
def get_absolute_url(self):
return "/categories/%s/" % self.slug
我编辑到:
def get_absolute_url(self):
return "/weblog/categories/%s/" % self.slug
它解决了这个问题。
我现在的问题是,为什么Entries应用程序不需要这个,但类别应用程序呢?
我的代码来自类:
def get_absolute_url(self):
return ('coltrane_entry_detail', (), { 'year': self.pub_date.strftime("%Y"),
'month': self.pub_date.strftime("%b").lower(),
'day': self.pub_date.strftime("%d"),
'slug': self.slug })
get_absolute_url = models.permalink(get_absolute_url)
答案 0 :(得分:1)
它在模型上使用get_absolute_url()
方法。改变它,它应该工作:)
[编辑] 对于编辑过的问题。 在您的类别模型中,当您在条目模型中使用永久链接时,您正在使用硬编码链接。我建议你在两个地方使用永久链接来解决问题。
以下是有关如何使用它的文档:http://docs.djangoproject.com/en/dev/ref/models/instances/#the-permalink-decorator