python - Django 管理界面上的链接断开

标签 python django django-admin django-urls

我目前正在阅读《实用 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/

相关文章:

python - Django 如何在将当前页面与 request.get_full_path 进行比较时排除 GET 参数

python - 如何在代理后禁用 Django 的 CSRF 保护

Django 管理员 : populate the field based on previous field value

python - 防止 RegEx 在大型匹配时挂起

Python如何为所有子类的联合定义类型提示

python - 提取文本文件的下一行

python - 如何从外部访问本地 Django 网络服务器

python - 使用相同的 Django 表单编辑/添加对象

python - "No action selected"删除对象时说Django-admin

Python:为什么这个文档测试失败了?