0

我有两个使用 Django-CMS 的站点。它们使用相同的代码和相同的数据库,并SITE_ID加以区分。

在带有 的网站上SITE_ID = 1,一切都很好。

在带有 的网站上SITE_ID = 2,我发布的某些页面(使用管理面板)只有在您登录后才能在该网站上看到。否则他们会给我一个 404 错误,并显示类似的消息

CMS: Page not found for "test"

其他页面都可以 - 特别是主页和带有 apphooks 的页面。

如果我设置DEBUG = False,我的所有网站页面都会出现 404 错误!

这发生在产品和我的开发服务器上。事实上,它甚至发生在我刚刚创建的一个完全普通的测试站点上。

我没有为任何页面选择“需要登录”。

如何使页面对所有人可见?

版本信息:我正在使用 Django-CMS 2.4.1 和 Django 1.5.1。我还将它们升级到 mptt 0.5.5,尽管 Django-CMS 专门只安装 mptt 0.5.2(请参阅这篇文章了解原因)。但是,当我在我的开发服务器上重新安装 mptt 0.5.2 时,问题仍然存在。

4

2 回答 2

2

我将此作为一个问题提出,现在有了答案 - 这是'public': False这段代码中的一行:

CMS_LANGUAGES = {
    1: [
        {
            'code': 'en',
            'name': gettext('English'),
            'public': True,
        },
    ],
    'default': {
        'fallbacks': ['en',],
        'public': False,
        }
}

The key "1" is the SITE_ID, so the above says to hide all sites after number 1 from the public.

So the solution is to add an entry keyed off SITE_ID 2 in the CMS_LANGUAGES setting.

于 2013-06-08T10:41:31.483 回答
1

我认为您需要先查看 ALLOWED_HOSTS 设置(https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts)。这很可能是您在关闭 DEBUG 时出错的原因。(虽然,我认为没有合法的 ALLOWED_HOSTS 会产生 500 个错误,而不是 404s。)。

于 2013-05-28T19:24:21.723 回答