Django管理界面上的断开链接

时间:2010-06-20 01:40:57

标签: python django django-admin django-urls

我目前正在阅读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)

1 个答案:

答案 0 :(得分:1)

它在模型上使用get_absolute_url()方法。改变它,它应该工作:)

[编辑] 对于编辑过的问题。 在您的类别模型中,当您在条目模型中使用永久链接时,您正在使用硬编码链接。我建议你在两个地方使用永久链接来解决问题。

以下是有关如何使用它的文档:http://docs.djangoproject.com/en/dev/ref/models/instances/#the-permalink-decorator