Python / Django - Организация таблиц стилей и скриптов - PullRequest
1 голос
/ 12 февраля 2011

Я ищу простой способ организации таблиц стилей и сценариев в Django.Я относительно новичок в фреймворке и языке Python.Я пришел из PHP фона.

В мире PHP / Zend есть функции, которые реализованы с помощью объекта view / layout.Включив одну строчку внутри тега head для сценариев и таблиц стилей, вы можете легко добавить таблицу стилей / сценарий в представление -> уровень метода.Я прочитал документацию по Django Form Media, но это касается только форм, нуждающихся в определенных стилях и сценариях.

Любое направление?

Ответы [ 4 ]

5 голосов
/ 12 февраля 2011

Посмотрите на приложение django.contrib.admin.

Параллельно с работой сайта администратора.

  1. Создание каталога мультимедиа.

  2. Создание мультимедиа / img, media /Каталоги jss, media / css, media / независимо от того, что у вас есть

  3. В каждом из них вы найдете материал для своего приложения.media / img / app1, media / jss / app1, чтобы каждое из ваших приложений Django могло иметь определенные носители без конфликтов или проблем.

  4. Убедитесь, что в ваших настройках установлен MEDIA_ROOT.Вы можете прочитать об этом в Django Docs.Вам также нужно будет установить MEDIA_URL для развертывания.И вам придется выяснить, как заставить ваш веб-сервер (т.е. Apache) обслуживать этот носитель.

Django не должен обслуживать статические файлы, такие как библиотеки .js или файлы .css илилюбые изображения.Это пустая трата времени.Апач может служить этому просто отлично.Однако в целях тестирования вы можете включить функцию простого файлового сервера на своем сайте Django.

Наконец.И самое главное.

Убедитесь, что шаблон вашей страницы действительно ссылается на различные файлы, которые вы хотите включить в свою страницу {{MEDIA_URL}}css/site.css и {{MEDIA_URL}}js/app1/something.js.

2 голосов
/ 14 февраля 2011

Помните, что начиная с django 1.3, старое приложение staticfiles стало частью django.contrib.

Главное, что нужно знать, это то, что вы можете вставить свой статический носитель в подкаталог static/ в любом приложении, которое есть в вашем settings.INSTALLED_APPS, и этот файл будет автоматически собран командой управления collectstatic.

Вместо повторного хеширования я просто укажу на документацию: Django: приложение staticfiles .

Возможно, вы захотите найти что-то, что будет обрабатывать ваши текстовые статические файлы (css и javascript), которые можно легко комбинировать, минимизировать и создавать версии. Я собираюсь разобраться в этом, так что ссылок пока нет.

0 голосов
/ 12 февраля 2011

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

В вашем файле base.html вы создадите раздел для добавления таблиц стилей.

{% block addl_styles %}{% endblock %}

Затем на странице, где вы хотите загрузить стили, вы будете использовать тот же блок вместе с * 1006.* чтобы добавить ваш скрипт в любые другие скрипты, вызываемые вашим приложением.

Таким образом, в шаблоне вашей формы вы должны использовать код, подобный следующему:

{% block addl_styles %}
{{ block.super }}
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}your_css_folder/example.css" />
{% endblock %}

Обратите внимание, что вы можете программно добавить базовый каталог, используя {{ MEDIA_URL }}, и получить вашу папку в безопасном месте.манера.

0 голосов
/ 12 февраля 2011

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

Так что в итоге я получаю что-то вроде этого:

/media
    /style
        base.css
        img/
            logo.gif
            button.gif
    /js
        home.js
    /profile
         user_profile_image.gif

Таким образом, ссылки на изображения внутри css всегда могут быть относительными, например:

background: url(img/background.gif)

Также есть некоторые приложения для обработки мультимедиа, сжатия css / js, спрайтов и т. Д.

...