Найти - Пользователи
Полная версия: запутался со статическими файлами в подключаемом модуле
Начало » Django » запутался со статическими файлами в подключаемом модуле
1
whitehat
Решил мигрировать свой небольшой внутренный сайт на джангу. Так как нужно будет отображать очень много таблиц, пытаюсь встроить djblets datagrid в проект.
Встраивание прошло успешно, оно отображает мои таблицы, но я никак не могу побороть отображение статических файлов, которые идут в стандартной поставке djblets. А именно css,js,images. Сами файлы лежат в “c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\”, при генерации страниц ссылки создаются такого плана “<img src=”djblets/images/datagrid/unsort.png“ В исходниках самого djblets ссылки выглядят так ”{{MEDIA_URL}}djblets/images/datagrid/checkmark.png?{{MEDIA_SERIAL}}"

manage.py collectstatic делал - он собирает файлы из текущего проекта, из admin, но не из djblets.
Писать в settings.py что-то на подобии
MEDIA_URL="c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\"
- явно какой-то неправильный путь :(
Как объяснить джанге, что нужно подтянуть статичные файлы djblets?

На всякий случай settings.py

Спасибо за помощь!
FishHook
whitehat
Решил мигрировать свой небольшой внутренный сайт на джангу. Так как нужно будет отображать очень много таблиц, пытаюсь встроить djblets datagrid в проект.
Встраивание прошло успешно, оно отображает мои таблицы, но я никак не могу побороть отображение статических файлов, которые идут в стандартной поставке djblets. А именно css,js,images. Сами файлы лежат в “c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\”, при генерации страниц ссылки создаются такого плана “<img src=”djblets/images/datagrid/unsort.png“ В исходниках самого djblets ссылки выглядят так ”{{MEDIA_URL}}djblets/images/datagrid/checkmark.png?{{MEDIA_SERIAL}}"

manage.py collectstatic делал - он собирает файлы из текущего проекта, из admin, но не из djblets.
Писать в settings.py что-то на подобии
MEDIA_URL="c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\"
- явно какой-то неправильный путь :(
Как объяснить джанге, что нужно подтянуть статичные файлы djblets?

На всякий случай settings.py

Спасибо за помощь!
Неа, в MEDIA_URL у тебя должно быть что-то типа
MEDIA_URL = ‘/static/’
и соответственно ссылки на медиа-ресурсы выглядят так
<script type=“text/javascript” src=“/static/js/jquery-1.5.1.min.js”></script>

А вот в
MEDIA_ROOT
ты пишешь что-то типа
MEDIA_ROOT = ‘/home/FishHook/sites/portal/portal/media’
whitehat
Добавил:
MEDIA_ROOT = 'D:/whitehat/Dropbox/projects/stats/media/'
MEDIA_URL = '/media/'
STATIC_ROOT = 'D:/whitehat/Dropbox/projects/stats/sitestatic/'
STATIC_URL = '/static/'
теперь генерируются ссылки вида “src=”/media/djblets/images/datagrid/sort_desc_secondary.png“”
но толку от этого мало - надо как-то “положить” в этот media файлы из “c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\”
FishHook
whitehat
Добавил:
MEDIA_ROOT = 'D:/whitehat/Dropbox/projects/stats/media/'
MEDIA_URL = '/media/'
STATIC_ROOT = 'D:/whitehat/Dropbox/projects/stats/sitestatic/'
STATIC_URL = '/static/'
теперь генерируются ссылки вида “src=”/media/djblets/images/datagrid/sort_desc_secondary.png“”
но толку от этого мало - надо как-то “положить” в этот media файлы из “c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\”
Так попробуй

MEDIA_ROOT = 'c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\'
MEDIA_URL = '/media/'
STATIC_ROOT = 'D:/whitehat/Dropbox/projects/stats/sitestatic/'
STATIC_URL = '/static/'
или перенеси код из c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\
в свою папку static
whitehat
FishHook
MEDIA_ROOT = 'c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\'
MEDIA_URL = '/media/'
STATIC_ROOT = 'D:/whitehat/Dropbox/projects/stats/sitestatic/'
STATIC_URL = '/static/'
или перенеси код из c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\
в свою папку static
в том то и дело, что таким образом поступать не хочется, ведь явно в django есть механизмы взамодействия с модулями, я ведь не переносил ничего из admin - джанго сам каким-то образом перенёс нужные файлы в проект
FishHook
whitehat
FishHook
MEDIA_ROOT = 'c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\'
MEDIA_URL = '/media/'
STATIC_ROOT = 'D:/whitehat/Dropbox/projects/stats/sitestatic/'
STATIC_URL = '/static/'
или перенеси код из c:\Python27\Lib\site-packages\Djblets-0.7alpha0.dev-py2.7.egg\djblets\media\
в свою папку static
в том то и дело, что таким образом поступать не хочется, ведь явно в django есть механизмы взамодействия с модулями, я ведь не переносил ничего из admin - джанго сам каким-то образом перенёс нужные файлы в проект
Как это не переносил

settings.py
# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/static/admin/'
>>> механизмы взамодействия с модулями
Ты путаешь теплое с мягким, модуль это модуль, а статические файлы - это статические файлы.
Концептуально, Django-проект не раздает статику, это дело веб-сервера.
Чтобы встроенный отладочный веб-сервер раздавал статику в settings.py есть настройки, их и юзай.
>>>таким образом поступать не хочется
Почему же?
whitehat
>>>таким образом поступать не хочется
Почему же?

Меня смутило, что django для admin как-то ведь понимает, откуда вытягивать те же картинки, а тут - надо вручную добавлять.. а если это хостинг и модуль обновится - это ж потом для всех проектов руками все эти файлы опять обновлять… вот и подумал, что должен быть более правильный путь….
FishHook
whitehat
>>>таким образом поступать не хочется
Почему же?

Меня смутило, что django для admin как-то ведь понимает, откуда вытягивать те же картинки, а тут - надо вручную добавлять.. а если это хостинг и модуль обновится - это ж потом для всех проектов руками все эти файлы опять обновлять… вот и подумал, что должен быть более правильный путь….
Опять путаешь понятия
>>> и модуль обновится
Модуль - это код. Ты его можешь подтянуть всегда и везде, хоть откуда, хотя бы
sys.path.append(“некий_путь”)
from “некий_путь” import ‘некий_модуль’
А статика - это статика, она не импортируется, это просто набор файлов, любых, она одна на проект. И это правильно.
whitehat
хорошо, спасибо за науку :) первый проект “после helloworld”, поэтому ещё не понимаю, где нужно делать “в лоб”, а где использовать магию джанго :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB