djagno admin css не работает после обновления django до 1.6

У меня есть два приложения django, одно с django version 1.3.1, а другое с django 1.2.3, и css-файлы внешнего интерфейса и административного раздела работают/работают нормально. Но недавно я обновил оба приложения до django 1.6. Теперь, после обновления внешнего интерфейса (css), он работает нормально, но admin css не работает / не обслуживается, я не знаю, что пошло не так после обновления. Может быть, в последней версии django была изменена какая-то статическая структура обслуживания? и ниже приведены некоторые из моих параметров файла настроек

настройки первого приложения django

SETTINGS_DIR = os.path.dirname(__file__)
DJANGO_PROJ_DIR = os.path.abspath(os.path.join(SETTINGS_DIR, os.path.pardir))
SITE_DIR = os.path.abspath(os.path.join(DJANGO_PROJ_DIR, os.path.pardir))
HOME = DJANGO_PROJ_DIR
STATIC_DOC_ROOT= HOME + '/static/'
MEDIA_ROOT = HOME + '/media'
MEDIA_URL = '/media/'

ADMIN_MEDIA_PREFIX = '/media/'
ADMIN_ROOT = '/admin/'


TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request")

# List of callables that know how to import templates from various sources.
if DEBUG:
    TEMPLATE_LOADERS = [
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
    ]
else:
    TEMPLATE_LOADERS = [
        ('django.template.loaders.cached.Loader',(
            'django.template.loaders.filesystem.Loader',
            'django.template.loaders.app_directories.Loader',
            # 'forum.modules.template_loader.module_templates_loader',
            # 'forum.skins.load_template_source',
            )),
    ]

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django_sorting.middleware.SortingMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'pagination.middleware.PaginationMiddleware',
)

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    HOME + '/templates',
)

две настройки приложения django

MIDDLEWARE_CLASSES = (                      
    'django.middleware.gzip.GZipMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'pagination.middleware.PaginationMiddleware',
)

TEMPLATE_CONTEXT_PROCESSORS = (
  'django.contrib.auth.context_processors.auth',
  'django.core.context_processors.debug',
  'django.core.context_processors.media',
  'django.core.context_processors.request',
 )

PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')

MEDIA_URL = '/media/'

ADMIN_MEDIA_PREFIX = '%s/media/admin/' % MEDIA_URL

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.load_template_source',
    'django.template.loaders.app_directories.load_template_source',
)

Так может кто знает как это исправить? и заставить работать админ css?


person Shiva Krishna Bavandla    schedule 15.06.2014    source источник
comment
используйте 1_   -  person ruddra    schedule 15.06.2014


Ответы (1)


Чтобы статические файлы заработали, необходимо сделать несколько вещей. Это зависит от того, какая у вас конкретная проблема. Попробуйте следующее:

  1. Посмотрите в журнал ошибок вашего веб-сервера, чтобы увидеть, что происходит не так с точки зрения вашего веб-сервера. Если ошибка жалуется на отсутствующие файлы, возможно, вы неправильно настроили параметры статического файла или у вас могут быть проблемы с разрешениями.

  2. Когда вы переходите на страницу в приложении-нарушителе, просмотрите его источник и обратите внимание на URL-адрес, на который он указывает. Он указывает на правильное место? Если нет, то у вас проблема с настройками вашего проекта или приложения (или в вашем шаблоне).

Я думаю, что у вас проблема с настройками вашего проекта. Похоже, вам не хватает этих строк в файле settings.py вашего проекта:

STATIC_URL= '/some/relative/url/' 
STATIC_ROOT = '/path/to/your/project/static/'
STATICFILES_DIRS = ('path/to/your/project/static/',)

Первый определяет URL-адрес, который следует использовать для ссылки на css и другие статические файлы (например, в html, выводимые вашим приложением), а второй и третий определяют фактический каталог в файловой системе вашего сервера, где файлы могут быть найдены.

Чтобы это работало, ваш веб-сервер должен сопоставить STATIC_URL с STATIC_ROOT. Если вы используете apache, это потребует помещения следующей директивы в блок VirtualHost:

Alias    /static/    /path/to/your/project/static/

Кроме того, apache (точнее, пользователь, запускающий apache) должен иметь доступ для чтения к статической директории!

Если это разделение статических файлов является новым для вас, вы должны прочитать это.

Вы не должны физически помещать свои статические файлы (например, css) в каталог STATIC_ROOT. Вместо этого поместите их в статическую папку соответствующего приложения. Предположим, вы поместили несколько файлов css внутрь /path/to/your/app_name/static/css/. В вашем проекте запустите python manage.py collectstatic, и Django скопирует файлы css в /path/to/your/project/static/app_name/css/. Ваш STATIC_ROOT определяет, куда они пойдут.

Если вы все еще застряли, проверьте журнал ошибок вашего веб-сервера и отправьте ответ с ошибками django и/или веб-сервера, которые вы получаете.

person Edward Newell    schedule 15.06.2014