3

私はいたるところを見て、すべてを試してきましたが、cssファイルをDjangoテンプレートで動作させることができないようです。私がstyle.cssと呼んだ私のcssは、現在テンプレートのコードは次のようになっています。

{% load staticfiles %}

<link rel="stylesheet" href="{{ STATIC_URL }}style.css" type="text/css" media="screen" />

私はまだ開発サーバーに取り組んでいます。設定pyで私は追加しました: STATICFILES_DIRS = ( "home/henk-jan/website/Template/Database")

django.contrib.staticfilesはInstalled_appsにインストールされます

誰かがこれで私を助けることができますか?乾杯、ヘンクス

編集:私のテンプレート(index.html)は私のstyle.cssと同じフォルダーにありますフォルダーは次のとおりです:/ home / henk-jan / website / Template / Database

4

3 に答える 3

3

元の投稿を見ると、ページを 2 つの異なる角度からレンダリングしているように見えます。

まず、{% load staticfiles %}staticfiles モジュールに関連付けられたテンプレートタグをロードするものがあります。次に、参照しているリンク要素内で、{{ STATIC_URL }}コンテキストを介して展開されます。

このことから、次の 2 つの行動方針のいずれかをお勧めします。

1 - テンプレートにロードした staticfiles モジュールと templatetags を利用します。

これを行うには、link 要素を次のように変更する必要があります。

<link rel="stylesheet" href="{% static "style.css" %}" type="text/css" media="screen" />

この例では{{ STATIC_URL }}、 を{% static %}templatetag に置き換えたことに注意してください。templatetagは{% static %}、静的 URL を前に付けるファイルである引数を取り、完全な文字列に展開します。

2 - コンテキストでレンダリングするようにビューを変更して、コンテキストを利用します。

変数は、{{ STATIC_URL }}リクエスト コンテキストを介して使用可能になります。便利な変数がいくつかあり、それらを利用したい場合に拡張するために頼ることができます。問題は、コンテキストを使用してテンプレートをレンダリングする必要があることです。これは、1 つ以上のビューを変更する必要がある可能性があることを意味します。

例として、コンテキストなしでレンダリングされる非常に単純なビューは次のようになります。

from django.shortcuts import render_to_response

def index_without_context(request):
    return render_to_response("index.html")

コンテキストでレンダリングされた同じ非常に単純なビュー次のようになります。

from django.shortcuts import render_to_response
from django.templates import RequestContext

def index_with_context(request):
    return render_to_response("index.html",
                              context_instance=RequestContext(request))

上で述べたように、テンプレートを でレンダリングすると、RequestContext他の変数などを取得できるため、非常に有効なオプションです。

最終的には、静的ファイルが静的 URL を正しくレンダリングすることを保証するロジックをどこに保持するかによって異なります。{% load staticfiles %}テンプレート自体の内部にそのロジックが必要な場合は、このアプローチを採用して{% static %}テンプレート タグを使用することをお勧めします。変数を利用する{{ STATIC_URL }}だけでなく、他の潜在的に有用な変数を利用したい場合は、ビューを RequestContext でレンダリングするように変更することをお勧めします。

まさにこのトピックに関する Django ドキュメント セクションで、コンテキスト プロセッサまたはテンプレート タグの使用の違いについて詳しく読むことができます。

https://docs.djangoproject.com/en/1.4/howto/static-files/#referring-to-static-files-in-templates

于 2012-10-09T08:20:30.357 に答える
1

"home/henk-jan/website/Template/Database"有効な場所ですか? 多分"/home/henk-jan/website/Template/Database"代わりに?現在、前のスラッシュがありません。

于 2012-10-02T13:20:54.073 に答える
0

開発サーバーで作業している場合は、Djangoに静的コンテンツを提供させることをお勧めします。本番環境に移行すると、代わりにWebサーバーで静的コンテンツの提供を処理できるようになります。

静的コンテンツへのパスを指定する必要STATIC_URLがあります(この場合は、そのように見えます/Template/Database/。これで機能しているようです。次に、DEBUGモードで静的コンテンツを提供するようにDjangoに指示する必要があります。次の投稿を参照してください。DjangoMEDIA_URLおよびMEDIA_ROOT

于 2012-10-02T14:58:48.893 に答える