web-dev-qa-db-ja.com

Django:CSSが機能していません

私はまだDjangoに慣れていないので、CSSの動作に問題があります。
私はリンクからの指示に従いました: Django Static Link tutorial 、静的ファイルの処理について。しかし、それはまだ機能していません。

設定

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = '/Users/a9austin/Development/sites/AlphaSocks/src/static_root/'

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/Django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'/Users/a9austin/Development/sites/AlphaSocks/src/staticfiles'

)

見る

#from Django.http import HttpResponse
from Django.shortcuts import render_to_response


def index(request):
return render_to_response('index.html')


index.html

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

そしてディレクトリ編成

src-> staticfiles-> css-> style.css



どうもありがとう、あなたの助けと時間は大いに感謝されます!

14
AustinT

Djangoで静的ファイルを提供するには、いくつかの設定があることを確認する必要があります。

STATIC_URL

この設定は、静的ファイルがどのURLにマップするかを指定します。あなたはすでにそれをしました。

STATICFILES_DIRS

これは、Djangoが静的ファイルを探すシステム上のすべてのフォルダーを指定します。プロジェクト内にいくつかのアプリがあり、アプリごとに異なる静的ファイルのセットが必要になる可能性があるという考えです。そのため、組織化の目的で、各アプリにはstaticディレクトリが含まれている場合があり、静的ファイルのみが保存されます。したがって、Djangoには、それらのディレクトリの場所を知る方法が必要です。これがこの設定の目的です。

STATIC_ROOT

この設定は、Djangoがすべての静的ファイルをコピーする場所を指定します。静的ファイルが既にある場所ではありません。開発を本番環境に任せると、Djangoは静的ファイルを提供できなくなります。これは、ここでは説明しません( の記事にあります) )。ただし、本番環境では、STATICFILES_DIRSで指定されている多くの静的ファイルではなく、すべての静的ファイルを1つのディレクトリに置く必要があります。したがって、この設定では、次のコマンドを実行して、DjangoがSTATICFILES_DIRS内のすべてのファイルからすべての静的ファイルをコピーするディレクトリを指定します。

$ python manage.py collectstatic

これが必要になるのは、本番環境に移行した場合のみであり、ここで指定したディレクトリは、STATICFILES_DIRSで指定したディレクトリと同じにすることはできないことに注意してください。

Urls.py

静的ファイルを提供するDjangoの開発では、静的URLをurls.pyに含める必要があります。

from Django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = ...

urlpatterns += staticfiles_urlpatterns()

上記のすべてを完了したら、DEBUG = Trueがある限り、静的ファイルを提供する必要があります。上記のリストの中で、あなたはSTATIC_URLしか完了していないようです。また、上記で説明したすべての手順は、質問でリンクしたドキュメント( link )にあることに注意してください。最初は少しわかりにくいかもしれませんが、何度か読んだ方がわかりやすくなります。

30
miki725

応答にRequestContextを追加すると、STATIC_URL変数がテンプレートにロードされます。

変更してみてください:

from Django.shortcuts import render_to_response

def index(request):
    return render_to_response('index.html')

に:

from Django.shortcuts import render_to_response
from Django.template.context import RequestContext

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

詳細については、Djangoに関するドキュメント テンプレート内の静的ファイルへの参照 を参照してください)。

1
kavdev

すべてを実行した後、DEBUG = True、python collectstatic、キャッシュをクリア、問題がまだ存在する場合はシークレットモードで開くと設定して、.cssファイルを静的フォルダー内の別の新しい.cssファイルにコピーし、 collectstaticコマンドを実行します。これでうまくいきました。これが役立つことを願っています。

0