Я хочу создать динамический CSS-файл в представлении, а затем отобразить шаблон, который загружает этот CSS-файл. В зависимости от аргументов, предоставленных представлению, CSS может иметь разные значения в определенных местах каждый раз при вызове представления. Как бы я это сделал? (Я должен добавить, что у меня нет опыта написания файлов на Python/Django.)
Вот упрощенный пример того, как, по моему мнению, это должно работать:
# urls.py
urlpatterns = patterns('',
(r'^myview/(?P<color>[0-9a-f]{6})/$', create_css_file),
)
# views.py
def create_css_file(request, color):
raw = "@charset 'UTF-8';\n\n"
raw += "body {\n"
raw += " color: #" + color + ";\n"
raw += "}\n\n"
f = open('mydynamic.css', 'r+')
f.write(raw)
return render_to_response('mytemplate.html', locals())
# mytemplate.html
{% extends "base.html" %}
{% block head %}
<link rel="stylesheet" media="screen" href="{{ f.name }}" />
{% endblock %}
По какой-то причине это не работает,хотя в исходном коде результирующей HTML-страницы похоже, что CSS-файл загружен правильно. f
даже приходит к шаблону правильно, потому что я вижу его содержимое, когда изменяю ...
строка к
<link rel="stylesheet" media="screen" href="{{ f }}" />
( f
вместо f.name
). Но HTML визуализируется без нужной настройки цвета. Может ли кто-нибудь сказать мне, почему это так?
Я подозревал какую-то проблему с путями, и я довольно много играл с разными путями, но безрезультатно.
Пожалуйста, не советуйте мне готовить несколько жестко закодированных CSS-файлов (как я нашел в ответах на подобные вопросы), потому что там будет несколько сотен возможностей.