2017-05-26 14 views
0

djangoテンプレートの中でfold/critical CSSファイルの上にインライン展開することは可能ですか?djangoテンプレート内のインラインCSSファイル

私のような何かを考えていた:につながるどの

<style>{% inline "css/home.above.css" %}</style>

<style>html {...} body {...} {content of the css file}</style>

しかし、私はその点で任意のressourcesを発見していません。

+1

[この質問](https://stackoverflow.com/questions/33607083/django-template-embed-css-from-file)の回答は、あなたが '{%include%}'タグを使用できると言っています。私はそれを試していない。私が考えることができるもう一つの方法は、あなたのビューでcssファイルを読んだり開くことができ、それをあなたのテンプレートコンテキストに入れることです。 – xyres

答えて

1

コメントを拡大するには、CSSファイルをテンプレートコンテキストに渡す方法があります。

def my_view(request): 
    with open('../path/to/style.css') as infile: 
     css = infile.read() 
     # if you want to remove newlines, uncomment the next line 
     # css = css.replace('\n', '') 
     # if you want to remove tabs, uncomment the next line 
     # css = css.replace('\t, '') 

    return render(request, 'template.html', {'css': css}) 

次に、あなたのテンプレートで、あなたは全体のCSSファイルにアクセスするために{{ css }}を使用することができます。


注:手動の代わりには、CSSから改行やタブを削除し、私はそれはCSSのコンプレッサーを使用する方が良いと思います。たとえば、タブの代わりに4つのスペースを使用している場合、余分なスペースは削除されません。

このライブラリは良いと思われます - csscompressor

+0

ありがとうございます。私は、django-compressorとインライン展開しようとします。 – maiis

関連する問題