Джанго;Как я могу подать шаблоны / images / css / js из пользовательского каталога 'skin'? - PullRequest
1 голос
/ 11 мая 2011

Я пытаюсь создать скинуемый проект Django.

У меня возникли проблемы с выяснением, как я могу обслуживать файлы из каталога скинов, а не из директории media., так что все файлы изображений / css / js скина могут находиться в папке (ях) скина.

Пользователь должен иметь возможность выбрать имя скина, предпочтительно, только изменив переменную SKIN_NAME в «настройках»(а может позже файл .ini).И все шаблоны / css / images будут загружаться из этого каталога.

Я думаю, что иметь возможность просматривать необработанные шаблоны было бы плохо, поэтому, возможно, это должен быть каталог 'media' внутри папки скина, сподпапки 'css', 'js' и 'images' внутри, и они будут обслуживаться оттуда.

Я довольно новичок в Django-фреймворке, хотя у меня есть некоторый опыт работы с Python, поэтому любые предложения о том, какэто будет / может быть сделано с благодарностью.

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Во-первых, вам лучше хранить статические файлы в папке static и использовать только media для загруженного контента.

Тогда в вашей папке static вы можете иметь папку для каждого изваша кожа содержит все необходимые CSS, изображения и JS.

Из шаблона вашей кожи просто импортируйте файлы с префиксом {{STATIC_URL}} и именем вашей кожи.

<link rel="stylesheet" src="{{ STATIC_URL }}name_of_your_skin/css/style.css" />

Если вашскины не нуждаются в отдельном шаблоне, который вы могли бы сделать:

<link rel="stylesheet" src="{{ STATIC_URL }}{{ skin_name }}/css/style.css" />
1 голос
/ 11 мая 2011

Когда пользователь выбирает имя "скина", сделайте это изменение MEDIA_ROOT в вашем файле настроек.

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) #assuming your settings file is in your project root
TEMPLATE_NAME = 'my_template'
MEDIA_ROOT = os.path.join(PROJECT_ROOT, "media", TEMPLATE_NAME)

print MEDIA_ROOT
# /path/to/project/media/my_template/

В будущем, если это изменится на переменную настраиваемых параметров, которая будет изменена в Admin, вы, вероятно, могли бы достичь того же результата с промежуточным ПО, которое изменяет значение MEDIA_ROOT.

...