Страницы Django CMS не видны после перезапуска сервера

#django-cms

#django-cms

Вопрос:

Я использую django-cms для создания простого веб-сайта для моей GF. Я редактировал базовый шаблон, и по какой-то причине мои изменения не выполнялись, поэтому я перезапустил серверный скрипт nginx только для того, чтобы к своему ужасу обнаружить, что я больше не вижу никакого содержимого страницы, только их имена в дереве в интерфейсе администратора. Если я пытаюсь перейти на страницу, он утверждает, что страница не существует.

Я подумал, что, возможно, что-то не так с настройкой, поэтому я запустил fix-tree и migrate (что могло быть ошибкой с моей стороны), и теперь даже имена страниц больше не отображаются в интерфейсе администратора. Страницы и их содержимое находятся в базе данных, но они больше не доступны.

Кто-нибудь сталкивался с подобной проблемой? Что может быть возможной причиной / решением для этого? Есть идеи, где искать

Я предполагаю, что что-то было не так с настройкой или, возможно, у меня была неправильная версия какого-то пакета, и тогда у меня не возникало проблем, пока я не перезапустил.

Я бы хотел вернуть все эти страницы, особенно если они все еще существуют в БД. Буду вечно благодарен за любую помощь.

Редактировать

Я просто попытался создать новую страницу. Я смог сделать это без каких-либо ошибок, страница видна в базе данных, но она не видна на странице «Страницы», а страница выдает ошибку 404.

ПРАВКА 2

Вот requirements.txt

 aldryn-apphooks-config==0.2.7
aldryn-boilerplates==0.7.4
aldryn-bootstrap3==1.0.10
aldryn-categories==1.0.3
aldryn-common==1.0.4
aldryn-newsblog==1.2.4
aldryn-people==1.2.1
aldryn-reversion==1.0.9
aldryn-style==1.1.1
aldryn-translation-tools==0.2.1
aldryn-video==1.0.0
Babel==2.3.4
backport-collections==0.1
beautifulsoup4==4.4.1
dj-database-url==0.4.1
Django==1.8.15
django-appconf==1.0.2
django-appdata==0.1.5
django-classy-tags==0.8.0
django-cms==3.2.5
django-durationfield==0.5.2
django-filer==1.2.4
django-formtools==1.0
django-mptt==0.8.6
django-parler==1.6.5
django-phonenumber-field==1.1.0
django-polymorphic==0.8.1
django-reversion==1.8.7
django-sekizai==0.10.0
Django-Select2==4.3.2
django-sortedm2m==1.3.2
django-taggit==0.21.2
django-treebeard==4.0.1
djangocms-admin-style==1.2.3
djangocms-attributes-field==0.1.1
djangocms-column==1.6.0
djangocms-file==1.0
djangocms-googlemap==0.5.1
djangocms-inherit==0.2.1
djangocms-installer==0.8.7
djangocms-link==1.8.2
djangocms-picture==0.2.0
djangocms-style==1.7.0
djangocms-teaser==0.2.0
djangocms-text-ckeditor==3.1.0
djangocms-video==1.0.0
easy-thumbnails==2.3
gevent==1.1rc3
greenlet==0.4.9
gunicorn==18.0
html5lib==0.9999999
jsonfield==1.0.3
lxml==3.6.4
micawber==0.3.3
phonenumbers==7.5.2
phonenumberslite==7.5.2
Pillow==3.3.1
psycopg2==2.6.1
python-dateutil==2.5.3
python-slugify==1.2.0
pytz==2016.6.1
six==1.10.0
tzlocal==1.2.2
Unidecode==0.4.19
virtualenv==15.0.1
webencodings==0.5
YURL==0.13
  

И вот файл настроек:

 import os

gettext = lambda s: s
DATA_DIR = os.path.dirname(os.path.dirname(__file__))
"""
Django settings for anninsivut project.

Generated by 'django-admin startproject' using Django 1.8.14.

For more information on this file, see
https://docs.djangoproject.com/en/1.8/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.8/ref/settings/
"""

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'VERY SECRET'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['.site.com', ]

# Application definition





ROOT_URLCONF = 'anninsivut.urls'

WSGI_APPLICATION = 'anninsivut.wsgi.application'

# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases




# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/

LANGUAGE_CODE = 'en'

TIME_ZONE = 'Europe/Amsterdam'

USE_I18N = False

USE_L10N = False

USE_TZ = True

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(DATA_DIR, 'anninsivut', 'media')
STATIC_ROOT = os.path.join(DATA_DIR, 'anninsivut', 'static')

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'anninsivut', 'common_static'),

)
SITE_ID = 1

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'anninsivut', 'templates'), ],
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.core.context_processors.i18n',
                'django.core.context_processors.debug',
                'django.core.context_processors.request',
                'django.core.context_processors.media',
                'django.core.context_processors.csrf',
                'django.core.context_processors.tz',
                'sekizai.context_processors.sekizai',
                'django.core.context_processors.static',
                'cms.context_processors.cms_settings',
                'aldryn_boilerplates.context_processors.boilerplate',
            ],
            'loaders': [
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
                'django.template.loaders.eggs.Loader',
                'aldryn_boilerplates.template_loaders.AppDirectoriesLoader',
            ],
        },
    },
]

MIDDLEWARE_CLASSES = (

    # 'cms.middleware.utils.ApphookReloadMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
    'cms.middleware.language.LanguageCookieMiddleware'
)

INSTALLED_APPS = (
    'djangocms_admin_style',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.admin',
    'django.contrib.sites',
    'django.contrib.sitemaps',
    'django.contrib.staticfiles',
    'django.contrib.messages',
    'cms',
    'menus',
    'sekizai',
    'treebeard',
    'djangocms_text_ckeditor',
    'djangocms_style',
    'djangocms_column',
    'djangocms_file',
    'djangocms_googlemap',
    'djangocms_inherit',
    'djangocms_link',
    'djangocms_picture',
    'djangocms_teaser',
    'aldryn_video',
    'reversion',
    'aldryn_apphooks_config',
    'aldryn_boilerplates',
    'aldryn_categories',
    'aldryn_common',
    'aldryn_translation_tools',
    'aldryn_newsblog',
    'aldryn_people',
    'aldryn_reversion',
    'aldryn_bootstrap3',
    'parler',
    'sortedm2m',
    'taggit',
    'easy_thumbnails',
    'filer',
    'anninsivut'
)

LANGUAGES = (
    ## Customize this
    ('en', gettext('en')),
)

ALDRYN_BOILERPLATE_NAME = 'bootstrap3'

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'aldryn_boilerplates.staticfile_finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

CMS_LANGUAGES = {
    ## Customize this
    1: [
        {
            'name': gettext('en'),
            'redirect_on_fallback': True,
            'code': 'en',
            'public': True,
            'hide_untranslated': False,
        },
    ],
    'default': {
        'redirect_on_fallback': True,
        'hide_untranslated': False,
        'public': True,
    },
}

THUMBNAIL_PROCESSORS = (
    'easy_thumbnails.processors.colorspace',
    'easy_thumbnails.processors.autocrop',
    # 'easy_thumbnails.processors.scale_and_crop',  # disable this one
    'filer.thumbnail_processors.scale_and_crop_with_subject_location',
    'easy_thumbnails.processors.filters',
)

CMS_TEMPLATES = (
    ## Customize this
    ('page.html', 'Page'),
    ('feature.html', 'Page with Feature')
)

CMS_PERMISSION = True

CMS_PLACEHOLDER_CONF = {}

DATABASES = {
    'default': {
        'CONN_MAX_AGE': 0,
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'HOST': 'localhost',
        'NAME': 'anninsivut_DB',
        'PASSWORD': 'password',
        'PORT': '',
        'USER': 'user'
    }
}
DEFAULT_FROM_EMAIL = 'name@domain.com'
SERVER_EMAIL = 'name@domain.com'
ADMINS = (
    ('Your name', 'your email address'),
)
MIGRATION_MODULES = {

}
  

@Paulo Спасибо, что спросили об этом. Теперь, когда я просмотрел файл требований и настроек, я вижу, что файл требований, который у меня был в моем локальном каталоге Pycharm, не синхронизировался с файлом на сервере. В какой-то момент я, должно быть, случайно обновился до Django 1.9 в venv сервера. Теперь я предполагаю, что при перезапуске именно тогда Django-CMS уловил изменения и потерял содержимое страницы. Затем, когда я увидел потерю и понизил рейтинг до 1.8, я также потерял имена страниц в дереве страниц. Я начну с просмотра изменений между ними, а также посмотрю, соответствуют ли пакеты тому, какими они должны быть.

Комментарии:

1. Привет, это может быть не очень полезно для решения вашей непосредственной ситуации, но вы думали об использовании более «упакованного» интерфейса Django CMS? Например, рабочий стол Aldryn ( divio.com/en ) значительно упрощает как локальную разработку, так и развертывание. (Я никоим образом не связан с ними, кроме того, что я пользователь платформы)

2. Спасибо за совет. Я рассмотрел это и на самом деле начал с Aldryn, но затем захотел лучше ознакомиться с внутренней работой как Django, так и Django-CMS. Что ж, лучше быть осторожным с тем, что вы хотите; теперь нужно настроить среду отладки и копаться…

3. Здравствуйте, @tarikki, пожалуйста, обновите свой вопрос с помощью файла требований и settings.py

Ответ №1:

Хорошо, мне удалось исправить. После пошагового выполнения кода в отладчике в Pycharm я понял, что случайно закомментировал

LANGUAGE_CODE = 'en'

строка в настройках с заставила Django вернуться к LANGUAGE_CODE = ‘en-us’, и поэтому он не смог найти страницы.

У меня также была проблема с синхронизацией между PyCharm и сервером развертывания, поэтому LANGUAGE_CODE = 'en' она не была прокомментирована в settings.py Я разместил сообщение здесь.

Итак, вкратце:

Пока код языка не должен совпадать в обоих

LANGUAGE_CODE = 'en'

и

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