Здравствуйте!
Напишу много, поэтому начну сначала. Я новичок и мое изучение Django вместе с python длится чуть больше месяца, поэтому в некоторых аспектах я совсем ноль. Для себя поставил практическую задачу написать некий небольшой сайт с возможностью покупок и новостной лентой. В процессе реализации собственно и проходит мое обучение и чтение документации, а также форумов.
Дошел я до этапа, когда разместил все на бесплатном хостинге pythonanywhere.com (Django 1.9.5 и python 2.7) и столкнулся с тем, что не вся статика подгружается. А дело вот в чем, новостную ленту и магазин я выполнили в виде двух приложений zames_app и news. Если в шаблонах я ссылаюсь на статику news/static/js/some.js, то браузер возвращает ошибку 404. А если я укажу zames_app/static/js/some_script.js, то все норм. Командой collectstatic я все собирал уже, толку нет. Хотя в корневой каталог Static все складывается. Т.е. Django из одного приложения пути до статики определяет нормально, а другого как-будто нет.
А началось все с того, что я захотел прикрутить редактор tinymce к текстовому полю новостей. На локальном сервере все работает, а на боевом нет. Начал копать и обнаружил, что админка не видит скрипты Jquery и еще один скрипт, а остальные свои скрипты типа календаря видит. Также на странице есть ссылка на скрипты tinymce, но там тоже возвращается 404. Но еще раз повтроюсь, СТАТИКА собралась со всеми скриптами по команде collectstatic... и админки... и редактора...
Два дня бился и прописывал настройки
# эта переменная будет указывать на папку проекта
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') # пустая папка, сюда будет собирать статику collectstatic
# путь до папки media, в общем случае она пуста в начале
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
MEDIA_URL = '/media/' # URL для медии в шаблонах
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'news/static'),
os.path.join(PROJECT_ROOT, 'zames_app/static'),
)
Все без толку - результат один. В результате я подключил редактор невообразимо диким образом для меня. Я залез в исходники Django и открыл шаблон страницы админки, которая отвечает за редактирование данных.
Прописал туда такие строки
<script type="text/javascript" src="{% static 'zames_app/js/vendor/jquery/jquery.min.js' %}" ></script>
<script type="text/javascript" src="{% static 'zames_app/js/vendor/xregexp/xregexp.min.js' %}" ></script>
<script type="text/javascript" src="{% static 'zames_app/js/django_tinymce/init_tinymce.js' %}" ></script>
<script type="text/javascript" src="{% static 'zames_app/js/tiny_mce/tiny_mce.js' %}" ></script>
И все заработало. Но, как Вы можете видеть я использую статику приложения zames_app. Пробовал указать статику приложения news (как бы логично, потому что редактор используется в нем), но в странице браузера вижу ошибки загрузки скриптов. В общем для меня это большая загадка сейчас.
Да, и еще... в модуле admin.py приложения пробовал прописывать скрипты через class Media, тоже не дало результата для статики news.
Не понимаю, почему сама админка, которая находится в пакете с джангой не может себя нормально загрузить. И почему как-то криво работают расширения типа редактора после установки.
Объясните мне, дураку, почему так??? Может у кого была такая ситуация.
Поделитесь опытом.
Заранее благодарен!
Updated 29 April 2016, 17:54 by Stasonych.