我目前正在阅读《实用 Django 项目》,在 Django 管理界面中,输入信息时有一个“现场查看”选项。
但是在读完本书的第 5 章后,我开始修改管理界面,发现使用我的类别应用程序单击此链接不起作用,因为它没有将博客附加到 URL,因此它们看起来像这样:
http://127.0.0.1:8000/categories/test-cat
当他们应该像这样的时候......
http://127.0.0.1:8000/weblog/categories/test-cat
但是在我的条目模型上它们运行得非常好。因此,我尝试查看“条目”应用程序中的正确内容,以找出“类别”应用程序中的错误内容。
我已经找了大约 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 应用程序不需要这个,而 Category 应用程序却需要?
我的 Entry 类代码:
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)
最佳答案
它在模型上使用 get_absolute_url()
方法。改变它,它应该可以工作:)
[编辑] 对于编辑后的问题。 在类别模型中,您使用硬编码链接,而在条目模型中使用永久链接。我建议您在这两个位置使用永久链接来解决问题。
以下是有关如何使用它的文档:http://docs.djangoproject.com/en/dev/ref/models/instances/#the-permalink-decorator
关于python - Django 管理界面上的链接断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3077909/