Страницы Django-CMS 2.4 с SITE_ID 2 найдены, только если вы вошли в систему
У меня есть два сайта, использующих Django-CMS. Они используют один и тот же код и ту же базу данных, с SITE_ID
отличая их.
На сайте с SITE_ID = 1
, Все хорошо.
На сайте с SITE_ID = 2
некоторые страницы, которые я публикую (используя панель администратора), можно увидеть только на сайте, если вы вошли в систему. В противном случае они выдают ошибку 404 с таким сообщением, как
CMS: Page not found for "test"
Другие страницы в порядке - в частности, домашняя страница и страницы с apphooks.
Если я установлю DEBUG = False
Я получаю 404 ошибки на всех страницах моего сайта!
Это происходит как в Prod, так и на моем сервере разработки. На самом деле это происходит даже на полностью ванильном тестовом сайте, который я только что создал.
Я не выбрал "требуется логин" ни для одной из страниц.
Как я могу сделать страницы видимыми для всех?
Информация о версии: Я использую Django-CMS 2.4.1 и Django 1.5.1. Я также обновил их до mptt 0.5.5, хотя Django-CMS специально устанавливает только mptt 0.5.2 (см. Этот пост, почему). Однако, когда я переустановил mptt 0.5.2 на моем dev-сервере, проблема осталась.
2 ответа
Я поднял это как проблему, и теперь есть ответ - это 'public': False
строка в этом коде:
CMS_LANGUAGES = {
1: [
{
'code': 'en',
'name': gettext('English'),
'public': True,
},
],
'default': {
'fallbacks': ['en',],
'public': False,
}
}
Ключ "1" является SITE_ID
Таким образом, вышесказанное говорит, чтобы скрыть все сайты после номера 1 от общественности.
Таким образом, решение состоит в том, чтобы добавить запись, отключенную SITE_ID
2 в CMS_LANGUAGES
установка.
Я думаю, что вам нужно сначала взглянуть на настройку ALLOWED_HOSTS ( https://docs.djangoproject.com/en/1.5/ref/settings/). Это очень вероятно, причина, по которой вы получаете ошибки при отключении DEBUG. (хотя я думал, что отсутствие допустимого ALLOWED_HOSTS приведет к 500 ошибкам, а не к 404).