静的ファイルをローカルで提供する場合、静的ファイルを収集する形式を設定していない場合、および Django 1.3+ を実行しているsettings.py
場合、静的ファイルを参照するときにこれがどのように見えるかを信じています。
# 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 = ''
# 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/cupcake/Documents/Workspaces/myDjangoProject/someOtherFolderPerhapsIfYouWant/static',
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
ここを省略していることに注意してSTATIC_ROOT
ください。これは、「まだ」静的ファイル コレクションの必要がないためです。
静的ファイルの収集は、複数の異なる staticfiles フォルダーを提供する際の問題を緩和 (スペル) することであるためstaticfiles
、この問題を支援するために通常使用されていたアプリをマージしました。ドキュメントで説明されているように、これが行うことは、すべてのアプリからすべての静的ファイルを取得し、それらを 1 つのフォルダーに配置して、アプリを運用環境に置くときに簡単に提供できるようにすることです。
問題は、このステップを「見逃した」ことです。そのため、それらにアクセスしようとすると 404 が発生します。
したがって、静的ファイルへの絶対パスを使用する必要があります。Mac または UNIX システムでは、次のようになります。
'/Users/cupcake/Documents/Workspaces/myDjangoProject/someOtherFolderPerhapsIfYouWant/static',
また、私が説明に使用したようなハードコードされたパスを持つ必要性を単純化して「修正」し、このようにすることもできます
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATICFILES_DIRS = (
PROJECT_ROOT + '/static/'
)
これにより、移植性の問題も解決されます。それに関する優れた Stackoverflow の投稿がここにあります
もう少しわかりやすくできたらと思いますが、間違っていたら訂正してください ^_^!
新しいバージョンの Django で静的ファイルを収集および管理する方法については、このリンクを参照してください
。 staticfiles アプリ