Как отобразить шаблон с динамическим CSS?

Я хочу создать динамический 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-файлов (как я нашел в ответах на подобные вопросы), потому что там будет несколько сотен возможностей.

6
задан joschaf 10 June 2012 в 11:30
поделиться