Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 24, 2011 22:18:57

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

CSS и шаблоны

Офлайн

#2 Сен. 24, 2011 23:16:18

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

CSS и шаблоны

apologize828 большое спасибо, я как то не догадался поискать решение проблемы в интернете, всё получилочь. У меня ещё один вопрос, в вашем примере ссылка на каталог статики подставляется так: {{ STATIC_URL }} , но в документации есть ещё один способ через спец. шаблонные теги: {% load static %} и {% get_static_prefix %}. Интуитивно меня тянет ко второму способу :) , скажите почему вы используете именно 1-ый и считаете его более правильным ?



Отредактировано (Сен. 24, 2011 23:47:56)

Офлайн

#3 Сен. 24, 2011 23:47:25

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

CSS и шаблоны

Кстати ещё один момент, когда я в вашем проекте в переменную STORAGE прописываю полный путь до проекта то в админке отваливается всё оформление:

Сообщение на консоль:

Если в STORAGE находится любая белиберда то всё работает.
Может я не тот путь прописываю ?



Офлайн

#4 Сен. 25, 2011 15:04:46

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

CSS и шаблоны

У меня ещё один вопрос, в вашем примере ссылка на каталог статики подставляется так: {{ STATIC_URL }} , но в документации есть ещё один способ через спец. шаблонные теги: {% load static %} и {% get_static_prefix %}. Интуитивно меня тянет ко второму способу :) , скажите почему вы используете именно 1-ый и считаете его более правильным ?
Тут я вам пока не подскажу! Я не увидел того чем второй вариант лучше и полезнее и чем он выигрывает у первого, следовательно пока руководствовался тем, что с клавиатуры набирать меньше:)
Можешь просто залезть в исходники и поглядеть как работает тег static. Если уж не поможет, то создай отдельную тему и спроси у местных гуру.

Кстати ещё один момент, когда я в вашем проекте в переменную STORAGE прописываю полный путь до проекта то в админке отваливается всё оформление. Если в STORAGE находится любая белиберда то всё работает.
Может я не тот путь прописываю ?
Можно конечно обойтись и без STORAGE. Нужно просто понять, что такое STORAGE.
Пример:
У вас есть проект(testproject).
Теперь для вашего проекта вам необходимо задать место, где будут храниться:
статика(css, img, javascript, ..) - STATIC_ROOT
данные загружаемые пользователем - MEDIA_ROOT
Мы конечно можем задать абсолютно произвольные каталоги, например:
STATIC_ROOT - D:/project/static/
MEDIA_ROOT - D:/files/media/
Но это очень не удобно, следовательно лучше хранить данные по одному проекту в одном месте, правим:
STATIC_ROOT - D:/project/static/
MEDIA_ROOT - D:/project/media/
Но и здесь есть недостаток, если мы захотим поменять путь, нам придется менять(D:/project/) в двух местах, а это не есть хорошо, следовательно правим:
STORAGE = D:/project/
MEDIA_ROOT = os.path.join(STORAGE, ‘media’)
STATIC_ROOT = os.path.join(STORAGE, ‘static’)
Смотрим теперь, если нам необходимо поменять путь до хранилища данных по нашему проекту, нам потребуется отредактировать файл конфигурации всего в одном месте STORAGE.
Также следует отметить, что не следует явно задавать пути, например такие как TEMPLATE_DIRS, так как если мы перенесем проект в другое место, то придется редактировать файл конфигурации и заново прописать путь до каталога с шаблонами.
Вывод: STORAGE - это все лишь хранилище данных нашего проекта.
Теперь когда вы прописали в STORAGE полный путь до вашего проекта, понимаете какую глупость вы делаете? Отваливается интерфейс администратора, потому что STATIC_ROOT должен быть отличным от STATICFILES_DIRS, когда вы задали полный путь до проекта, то у вас STATIC_ROOT и STATICFILES_DIRS совпадают, думаю это отчетливо должно быть видно.

Надеюсь объяснил понятно, если есть вопросы спрашивайте, что не понятно.



Отредактировано (Сен. 25, 2011 15:47:01)

Офлайн

#5 Сен. 25, 2011 18:38:38

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

CSS и шаблоны

Идею заложенную в STORAGE я понял сразу, но мне показалось что STORAGE должен указывать на каталог с проектом, а получается что там может быть любой путь кроме каталога проекта, правильно я понимаю ? В вашем тестовом проекте если в STORAGE записать путь к каталогу проекта то конфликт путей всегда будет.

Да и ещё где то в доках, а может в книге какой то прочитал что так пути лучше не писать:
os.path.join(os.path.dirname(__file__), ‘static’).replace('\\', ‘/’),
так как ошибки в таких записях трудно идентифицировать по сравнению со статическими записями.



Отредактировано (Сен. 25, 2011 18:49:06)

Офлайн

#6 Сен. 25, 2011 19:01:14

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

CSS и шаблоны

Идею заложенную в STORAGE я понял сразу, но мне показалось что STORAGE должен указывать на каталог с проектом, а получается что там может быть любой путь кроме каталога проекта, правильно я понимаю ?
Да.
В вашем тестовом проекте если в STORAGE записать путь к каталогу проекта то конфликт путей всегда будет.
Смотри выше.
Да и ещё где то в доках, а может в книге какой то прочитал что так пути лучше не писать:
os.path.join(os.path.dirname(__file__), ‘static’).replace('\\', ‘/’),
так как ошибки в таких записях трудно идентифицировать по сравнению со статическими записями.
Не согласен. Явно зашивать пути в настройки не есть хорошо. Конфигурация должна сводиться к минимуму. Лучше в будущем внести изменения только в одном месте, это позволит не париться с настройками всем тем людям, которые будут запускать ваш проект в будущем.



Отредактировано (Сен. 25, 2011 19:23:45)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version