MiK
Янв. 19, 2015 17:36:42
Второй вопрос из моей серии.
Хотя как ни жаль, но на первый ответить подробно оказалось некому.
Вообщем суть проблемы вот в чём: по современным стандартам все языки должны лежать в отдельных файлах, и, замечу, что это действительно очень удобно. Однако что делать если необходимо ставить джанговские переменные в CSS? Ну например динамическое отображение цветов, или разные картинки для разных ситуаций?
Есть ли какой-то способ, чтобы “динамический” css оставался-таки целиком в своём файле не залезая в пространство html?
terabayt
Янв. 19, 2015 18:09:28
мне кажется вы сами не знаете чего хотите!
MiK
по современным стандартам все языки должны лежать в отдельных файлах
было бы очень интересно почитать эти стандарты, скиньте ссылочку
MiK
Хотя как ни жаль, но на первый ответить подробно оказалось некому.
а чего вы хотели? какие еще вопросы остались?
и ответ на вопрос:
views.py
def home(request):
return render_to_response('home.html', {'style': 'p {color: red}'})
home.html
<html>
<head>
<style>{{ style }}</style>
</head>
<body>
<p>Hello world</p>
</body></html>
как известно, стили в style перекрывают стили в файлах подключены через link rel
MiK
Янв. 19, 2015 18:39:22
terabaytТам же написано: повторяться неохота. Я честно говоря вообще не могу понять всего этого замута со статикой в джанго.
def home(request):
return render_to_response('home.html', {'style': ‘p {color: red}’})
Предлагаешь вынести таблицу стилей во вьюху?
Ссылок на русском языке не знаю, изучал по книжке. В поиске много бесплатных - не проблема.
Вкратце: сам html остался для разметки структуры, остальное, включая расположение элементов, выносится в отдельные файлы. Решение верное так как адаптивная вёрстка этого очень сильно требует.
terabayt
Янв. 19, 2015 18:59:23
terabayt
было бы очень интересно почитать эти стандарты, скиньте ссылочку
MiK
Предлагаешь вынести таблицу стилей во вьюху?
нет! только днамические параметры
style.css
body {color: white}
.lala {atrr: value}
. . .
p {color: black}
. . .
home.html
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<style>{{ style }}</style>
</head>
<body>
<p>Hello world</p>
</body></html>
views.py
from django.shortcuts import render
from django.shortcuts import render_to_response
import datetime
def home(request, style = ''):
if datetime.datetime.now().hour <= 18:
style += 'p {color: red;}'
return render_to_response('home.html', {'style': style})
MiK
Янв. 19, 2015 19:35:47
Вообще ты натолкнул меня на мысль - “внедрить динамические параметры css” через наследование шаблонов.
То есть делаем шаблон “название.css”, внутри которого таблица стилей, ну и потом вставляем через наследование в хтмл-файл, если уж нет способа использовать для таких целей внешний ресурс.
Есть получше идеи?
ПС: просто так как ты предложил, будет громоздко при большом количестве переменных, да и попросту неудобно править.
JOHN_16
Янв. 19, 2015 22:35:07
MiK
в таком случае делать на JS
inoks
Янв. 19, 2015 22:50:50
так а что нужно стилями делать?
Может нужно все эти стили прописать во внешнем файле и в дальнейшем правильно в шаблоне присваивать классы?
MiK
Янв. 20, 2015 05:11:13
JOHN_16
На мобилки не все браузеры поддерживают джаваскрипт.
inoks
Скорее всего классы - это единственный выход.
Использовать классы как переменные для изображений, например. Но это тоже будет нормально до тех пор, пока изображений немного, иначе в таблице стилей будет многосотенный перечень классов.
Вообщем, получается Джанго отстал от жизни?
JOHN_16
Янв. 20, 2015 09:00:51
MiK
На мобилки не все браузеры поддерживают джаваскрипт.
Вы счаз не про сматфоны, а именно про обычные мобильные телефоны?
MiKесли для вас так принципиально - напишите свою функцию представления , которая бы воспринимала css как шаблон и возвращала бы его render.
inoks
Янв. 20, 2015 09:34:00
MiK
Вообщем, получается Джанго отстал от жизни?
а как должно быть в современном фреймворке?