Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не удается подключить css, Django, static, CSS 
V
    Опции темы
Anark1
Дата 1.7.2011, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



Здравствуйте,
не так давно начал разбираться с Django и сразу же начал сталкиваться с разного рода проблемами. Задача - подключить css.
Делал все как тут (Basic usage):
https://docs.djangoproject.com/en/dev/howto/static-files/
То есть, моя последовательность действий:
В моем приложении создал папку static, в ней папку css, там файл style.css. django.contrib.staticfiles подключено. Затем пишу такой код: 
Код

<link rel="stylesheet" href="{{ STATIC_URL }}css/style.css" type="text/css" />

и css не подключается. Никаких дополнительных манипуляций с параметрами я не делаю, потому как если я правильно понял, то все в моем случае дефолтно.
Далее я не очень понимая смысла параметров STATIC_ROOT и STATIC_URL, сделал директорию static в корне проекта, прописал STATIC_ROOT, STATIC_URL, сделал collectstatic, все скопировалось чудесно. Но результата опять никакого, более того в конечном html коде вообще никаких изменений, то есть css/style.css и все. 
Еще не очень понятно, видел где-то в примерах, что и для css нужно прописывать маршрутизацию, но в джанго мануале этого нет.
Подскажите пожалуйста в чем я не прав и заодно буду признателен за разъяснения насчет смысла маршрутизации в данном случае, а также смысл collectstatic.


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
Anark1
Дата 1.7.2011, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



Запилил явно через маршрутизацию. Хочется узнать можно ли иначе, а то как то это слишком, так подключать CSS.


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
Stolzen
Дата 2.7.2011, 01:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 1
Всего: 48



В настройках добавляете путь к вашим static файлам
Код

MEDIA_ROOT = os.path.join(SITE_ROOT, "static")


И затем путь до таких фалов в urlconf, чтобы правильно диспатчер отпрабатывал запросы к статике:
Код

from settings import PRODUCTION, MEDIA_ROOT

if not PRODUCTION:   
    urlpatterns += patterns('',
        (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': MEDIA_ROOT}),
    )    


Флаг PRODUCTION нужен для индикации, находится ли сервер под управлением тестового веб-сервера или уже под apache/чем-нибудь-другим - ведь в production серверах есть возможность явно указывать путь к static файлам в конфигах.

Это сообщение отредактировал(а) Stolzen - 2.7.2011, 01:10


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Anark1
Дата 2.7.2011, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



Stolzen,
спасибо. А можно уточнить смысл маршрутизации в данном случае. Если я захочу хранить свои статик файлы в нескольких подпапках. Например css и js.
То есть можно добавить еще один маршрут, но это не совсем то. Если я правильно понимаю, то в данном случае все файлы должны храниться в одной папке.
И еще ряд вопросов.
1. А можно раскидать статик файлы по разным папкам, прописать STATICFILES_DIRS, потом сделать collectstatic в одну папку и указать до нее путь, как Вы написали?
2. Интересуют комментарии по примеру с мануала джанго (ссылка в первом посте), там используется STATIC_URL. То есть как вообще вся эта схема работает, есть ли иные механизмы, как использовать STATIC_ROOT, STATIC_URL. 
3. Я пока не очень сильно проникся джанго, не понимаю смысла скажем STATIC_ROOT и STATIC_URL, если последний принимает не кортеж, а лишь строку, почему нельзя сразу все вбить в STATIC_ROOT.
Заранее спасибо.

Это сообщение отредактировал(а) Anark1 - 2.7.2011, 12:52


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
Stolzen
Дата 2.7.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 1
Всего: 48



Да, по-хорошему они должны хранится в одной. (И при необходимости можно добавить еще один маршрут)

Цитата(Anark1 @  2.7.2011,  13:51 Найти цитируемый пост)
1. А можно раскидать статик файлы по разным папкам, прописать STATICFILES_DIRS, потом сделать collectstatic в одну папку и указать до нее путь, как Вы написали?

Можно попробовать из разных папок статические файлы запамить по одному адресу. Примерно вот так
Код

STATICFILES_DIRS = ['dir_a', 'dir_b', 'dir_c']
SERVER_STATIC_DIR = 'static'

# подготавливаем параметры
def prepare(args, path):
    # шаблон, по которому строится путь
    tplt = r'^%s/(?<path>.*)$' % path
    # класс, раздающий статику
    serve = 'django.views.static.serve'
    return [(tplt, serve, {'document_root': el}) for el in args]

# здесь теперь хранятся параметры, которые можно передавать в patterns
params = prepare(STATICFILES_DIRS)

# теперь передаем их
static_patterns = patterns('', *params)

# и добавляем к urlpatterns приложения
urlpatterns += static_patterns

Правда нужно проверить, будет ли работать. 

Или вы физически файлы хотите перенести в одну папку? 

Цитата(Anark1 @  2.7.2011,  13:51 Найти цитируемый пост)
2. Интересуют комментарии по примеру с мануала джанго (ссылка в первом посте), там используется STATIC_URL. То есть как вообще вся эта схема работает, есть ли иные механизмы, как использовать STATIC_ROOT, STATIC_URL. 

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




--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Anark1
Дата 2.7.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



Спасибо! Будем посмотреть.


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
Anark1
Дата 2.7.2011, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



Если интересно, такая тема. Прочитал в мануале (не понял почему ну да ладно), для того чтобы {{ STATIC_URL }} заработал, нужно обязательно передавать из представления в функцию render_to_response третьим параметром context_instance=RequestContext(request). Соответственно ставим STATIC_URL где лежат все статик файлы и можно подпапки и тогда происходит подстановка. Но все равно нужно прописывать маршрутизацию руками. Даже так.
Прочитал у одного человека
Цитата

В любом проекте есть статические файлы(css, js, image и другие). На продакшин сервере мы их будем раздавать через Nginx, но при самой разработке ставить nginx для таких целей как-то не красиво, поэтому будем их раздавать через Django.

Для меня не очень понятно, что это значит. То есть подразумевается на продакшн "в обход джанго", имеется ли ввиду какой-то хардкод или что.


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
Stolzen
Дата 2.7.2011, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 1
Всего: 48



Цитата(Anark1 @  2.7.2011,  16:57 Найти цитируемый пост)
Для меня не очень понятно, что это значит. То есть подразумевается на продакшн "в обход джанго", имеется ли ввиду какой-то хардкод или что. 

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

<VirtualHost *:80>
    Alias /static/ /path/to/static/
    WSGIScriptAlias / /path/project.wsgi 
</VirtualHost>

Сначала биндится статика, потом уже сам скрипт.

Вообще часто советуют для раздачи статики использовать дополнительный сервер, типа nginx, лично пока не практиковал такого.



--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
damask
Дата 3.8.2011, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.8.2011

Репутация: нет
Всего: нет



Вот небольшой мануал, который мне помог подключить статические файлы работа со статическими файлами в Django
PM MAIL   Вверх
gomer999999999
Дата 3.2.2013, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 3.2.2013

Репутация: -1
Всего: -1



Добрый день.
Предлагаем к рассмотрению и тестированию наш проект - Маркетер Плагин.
Продвигаем его успешно во всем мире. Но только 27 января 2013 предоставили в Рунете к тестированию русифицированный плагин с русифицированным интерфейсом. Вся подробная информация наhttp://www.marketerplugin.ru/ 
Предлагаем протестировать наш плагин на только что русифицированном интерфейсеhttp://www.marketerplugin.ru/test_plagina.
В двух словах: плагин предназначен для создания сайтов-визиток и страниц продаж.
Ждем ваших комментариев, отзывов и критики.
Так же будем рады видеть вас на наших страницах в соц сетях
http://www.facebook.com/pages/Marketer-plugin/5288148..
http://vk.com/club46912629
Успехов и новых впечатлений.
С уважением, Богдан
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.