2

私はdjangoを初めて使用する前に多くのpythonを書いていましたが、これまでのところ気に入っています。

私の以前の Web 経験は PHP でした。CSS を簡単に維持できるようにするために、CSS として php ファイルを使用し、それを CSS コンテンツ タイプとして提供します。したがって、サイト内のすべてを変更するために簡単に変更できる変数を作成できます。

例: styles.php:

<?php header('Content-type: text/css');

$pink = '#91305f';
$green = '#a4ce39';
$black = '#000000';
$white = '#ffffff';
$std_font = "'Ruda', sans-serif";
$std_shadow = "text-shadow: 1px 1px 1px #000;";
$big_shadow = "text-shadow: 2px 2px 2px #000;";
$h_space = '10px';
?>

と...

html {
    background-color:<?= $pink ?>;
    color: <?= $green ?>;
    font-family: <?= $std_font ?>;
}

したがって、サイト全体で黒の意味を変更したい場合は、上部の $black = と、CSS で color: と言ったすべての場所を変更するだけです。続きます。

私はdjangoで同じタイプのことを達成したいのですが、それを行う方法がわかりません。ビューを使用してcssでテンプレートをレンダリングできると考えていますが、これについてどうすればよいかよくわかりません。私のビューでdictを作成し、それをrender_to_responseに渡してから、テンプレートファイルで参照するのと同じくらい簡単ですか?

例: views.py:

def style(request):
    colours = {'pink' : '#91305f', 'green' : '#a4ce39'}
    return render_to_response('styles.css', {'styles': colours},
                              context_instance=RequestContext(request))

次に、templates/styles.css で:

html {
        background-color:{{ styles.pink }};
        color: {{ styles.green }};
    }

これは実行可能な解決策ですか?もしそうなら、ビューをテンプレートに結合しているように見えますが、これを達成するために必要なデータをどこに保存するかわかりません。

ありがとうアーロン

4

3 に答える 3

1

あなたが言うことを正確に行うことができるので、静的ルートにない場所から css を提供し、URL システムを介して要求を渡し、ファイルをページとしてレンダリングします。ただし、特にページの読み込みごとに複数の CSS ファイルを提供している場合、これはすべてのアカウントでかなり非効率的なアプローチです。その場合にできることは、CSS ファイルを無期限にキャッシュし、コマンドでのみ更新するように Web サーバーを設定することです。この場合、静的 CSS ファイルのすべての速度の利点と動的 CSS ファイルのすべての保守性を利用できます。もの。カスタム CSS を各ユーザーに提供する場合、このアプローチは機能しません。あなたができる最後のことは、djangoテンプレートのような変数のロードを定義する場所で作成した「meta-css」ファイルを解析できる小さなパーサーを自分で書くことです. 次に、それらを指定した変数に置き換え、結果の CSS をアップロードして静的ファイルとして提供します。もちろん、django エンジンを使用してページを要求し、生成されたファイルを静的ディレクトリにコピーするだけで、Apache キャッシュの手動バージョンになります。

于 2012-07-21T11:15:42.697 に答える
1

私があなたの質問を正しく理解していれば、スタイルシートをすべて編集することなく、サイト全体のレイアウトを簡単に変更できるようにしたいと考えています。私には、インライン スタイルと生成された css を使用したくないように思えますが、代わりに SASS または LESS を使用し、変数を使用して色を設計します。

于 2012-07-21T11:33:57.453 に答える
0

これが良い方法かどうかはわかりません。おそらく、class特定のスタイルを適用したい要素に追加できます。

とにかく、この方法を続けたい場合は、デフォルトでこれらの変数を追加するコンテキスト プロセッサを実装できます。コンテキスト プロセッサの作成を参照してください。

于 2012-07-21T11:02:53.570 に答える