检查 Django CMS 中是不是存在页面

Posted

技术标签:

【中文标题】检查 Django CMS 中是不是存在页面【英文标题】:Check whether a page exists in Django CMS检查 Django CMS 中是否存在页面 【发布时间】:2013-11-20 16:23:06 【问题描述】:

我正在 Django CMS 的管理区域中创建一个页面,并且我在高级设置下有 redirect 字段。如何检查在该字段中输入的 URL 是否是现有 Django CMS 页面的有效 URL?

我应该测试什么?我考虑过向该 URL 发出请求,如果它抛出 404,则使该字段无效,但这听起来有点牵强。我还有哪些其他选择?

【问题讨论】:

【参考方案1】:

我使用了cms.utils.page_resolver 中的get_page_queryset_from_path,并使用上述函数检查了在redirect 字段中输入的路径实际上返回了一个有效的Page

【讨论】:

【参考方案2】:

您可以检查您的实际页面是否在页面池中

如果您的页面处于草稿模式:

from cms.models import Page
your_page.get_path() in [p.get_path() for p in Page.objects.public().published()]

带有reverse_id:

your_page.get_path() in [p.get_path() for p in Page.objects.all() if p.reverse_id != your_page.reverse_id]

【讨论】:

以上是关于检查 Django CMS 中是不是存在页面的主要内容,如果未能解决你的问题,请参考以下文章

Django CMS - 创建第一页时模板不存在错误

如何检查Django中是不是存在模板?

检查列表 django 模板中是不是存在

检查以检查 Django 中是不是存在数据库表?

检查 Django 中是不是存在 OneToOne 关系

Django:如何检查自定义小部件定义中是不是存在字段错误?