2013-12-15 3 views
0

На моем локальном ПК я могу сделать «python manage.py runningerver», и сайт отлично работает, CSS и все. Я просто развернул сайт на общедоступный сервер, и, хотя большинство вещей работает, CSS (и изображения) не загружаются в шаблоны.CSS не загружается в шаблон Django. Работает при запуске локально

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

В настройках проекта Django используется одна и та же функция python, чтобы приложение могло видеть шаблоны и статические файлы CSS/изображений. Шаблоны находятся в представлениях и загружаются без проблем.

Оба из settings.py:

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates/css').replace('\\','/'), 
    os.path.join(os.path.dirname(__file__), 'content').replace('\\','/'), 
) 

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'), 
) 

В файле base.html который остальная часть всех шаблонов удлиняет: структура

<head> 
    {% load staticfiles %} 
    <link rel="stylesheet" type="text/css" href="{% static "style.css" %}" media="screen"> 
</head> 

Каталог:

|project_root/ 
|--manage.py 
|--project/ 
| |--settings.py 
| |--__init__.py 
| |--content/ 
| | |--header.jpg 
| |--templates/ 
| | |--base.html 
| | |--css/ 
| | | |--style.css 

Мои Сначала, когда CSS не загружался, Django не смог найти файл style.css, но поскольку я использую тот же «os.path.di rname (file) «Техника как с шаблонами, я не уверен, что это так.

Что я имею здесь неправильно?

Edit:

Я забыл упомянуть, что оба компьютера и сервер работает на Python 2.7.5 и Django 1.5.5.

+0

Как вы развернули свой проект? Для статических файлов вы выполняете [официальное руководство] (https://docs.djangoproject.com/en/1.6/howto/static-files/deployment/)? – sk1p

+0

читайте это: http://www.hasnath.net/blog/serving-static-files-css-js-images-in-django-the-best-way после стольких копаний. Я придумал это. – sha256

+0

Какой сервер вы используете? – yuvi

ответ

1

Вы никогда не говорил об этом в своем посте, так что я угадал:

Вы никогда не бежал ./manage.py collectstatic

collectstatic находит все статические файлы (CSS, изображения, JS) и помещает их в каталог (Выберите этот каталог с настройкой django STATIC_ROOT) Затем вы указываете ваш веб-сервер в этот каталог

+0

Точно верно. Мне также нужно было настроить STATIC_URL в качестве общей папки, которую Dreamhost автоматически выполняет. – ASwitchTooFar

1

Вам следует развернуть статические файлы, используя ваш сервер, а не django.

official documentation упоминает использование collectstatic, но если ваши статические файлы не испорчены, это обычно не является обязательным требованием. Вам просто нужно иметь каталог, содержащий все ваши статические файлы. Затем вы просто нажимаете его с сервером в том же месте, что и django.

Скажите, что вы STATIC_URL: '/static/', поэтому вам нужно добавить псевдоним, который сопоставляет '/static/' в статическом каталоге. Например, используя Apache, вы должны добавить эту строку в свой http.conf:

Alias /static/ /path/to/mysite.com/static/ 

Вот и все! Это также относится к медиафайлам, и было бы разумно удалить любую порцию статических файлов, созданных django для сервера разработки (these kinds of urls). Наконец, check out the documentation для получения дополнительной информации о других типах развертывания

Смежные вопросы