静的ファイルを取得できません。さまざまな設定やディレクトリ構成などを試しましたが、それらは404として表示されます。 debug_toolbarがインストールされているため、STATIC_URLがリクエストコンテキストに到達していることがわかります。
/ staticを示すディレクトリ構造(試してみるために、食事アプリフォルダー内のディレクトリとユーザーも配置しました。
/mealmate
/mealmate
/meals
/static
/css
/bootstrap.min.css
/templates
/users
Settings.py(私は他のさまざまな設定を試しましたが、いくつかの重要な設定):
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media/')
STATIC_URL = '/static/'
INSTALLED_APPS = (
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.sites',
'Django.contrib.messages',
'Django.contrib.staticfiles',
)
WSGI_APPLICATION = 'mealmate.wsgi.application'
Base.htmlでレンダリング
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
何か案は?ありがとう
これは、Django for Windowsでのstatic/media/templateアクセスの有効なソリューションです。
settings.py
import os.path
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
私にとってこれは、settings.py
でdebugをfalseに設定することによって引き起こされることが判明しました。回避策は--insecure
スイッチをrunserver
に渡すことですが、実際の解決策は適切なWebサーバーを使用して静的ファイルを提供することです。詳細については、 この質問 への回答を参照してください。
これをWebサーバーで実行している場合、静的ファイルをアクセス可能なパブリックフォルダーにコピーしていますか?例えば:
# web accessible folder
STATIC_ROOT = '/home/your_name/www/mealmate/static/'
# URL prefix for static files.
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
# location of your application, should not be public web accessible
'/home/your_name/website/mealmate/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 static Files を使用して、manage.pyを使用して静的ファイルをパブリックアクセス可能なフォルダーにコピーできます。
# --link Create a symbolic link to each file instead of copying.
# --noinput Do NOT Prompt the user for input of any kind.
#
python manage.py collectstatic -link --noinput
お役に立てば幸いです!
また、Apacheが静的ディレクトリへのリクエストをブロックしたことに気付くまで、404の問題に巻き込まれました。 python manage.py collectstatic
を使用して、すべての静的ファイルをプロジェクトルートの下のstatic dir、つまり/ var/my/site/staticにコピーしました。と
Alias /static /var/my/site/static
<Directory /var/my/site/static>
Require all granted
</Directory>
/ etc/httpd/conf/httpd.confで、正常に動作するようになりました。
上記の答えがどれもうまくいかない場合は、サーバー構成を確認することを検討してください。
私は単に同等のものを追加しました
STATICFILES_DIRS = (
'/absolute_path_to_project/mealmate/static',
)
これを機能させるために。もちろん、absolute_path_to_project
実際のパスを入力し、必要に応じてドライブ文字を追加します。
食事仲間がINSTALLED_APPSに含まれていることを確認してください
上記のコメントから-これを実行する
python manage.py findstatic --verbosity 2 css/styles.css
「css/styles.css」に一致するファイルが見つかりません。
次の場所を探します。
/Users/yourname/Documents/Workspace/test/staticfiles
staticフォルダーの名前をstaticfilesに変更しただけで、すべてうまくいきました。 (私はosx + Django 1.x)を使用しています
ローカルのデベロッパーボックスを使用している場合、安全でないモードを使用しても問題はありません。そうでない場合、404エラーが発生する可能性があります。
python manage.py runserver --insecure
更新
実際にsettings.pyを掘り下げて、侵害ラインを見つけました。
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'staticfiles'),
)
in Djangoテンプレートにはもう1つの利点があります。これは、このような静的変数をリンクでき、おそらくこれがあなたの問題です!
<script src="{% static 'myapp/bootstrap.min.js' %}"></script>
<link href="{% static 'myapp/bootstrap.css' %}" rel="stylesheet" type="text/css"/>
使用する方が良い
{%static 'filename'%}
また、そのことをより簡単に知るために、 https://docs.djangoproject.com/en/1.11/intro/tutorial06/ を参照します。
ここでDjango1.3 +を使用していると仮定しています。
最初に、さらにいくつかの設定を定義する必要があります。
STATICFILES_FINDERS = [
'Django.contrib.staticfiles.finders.FileSystemFinder',
'Django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
STATICFILES_DIRS = [
path.join(TOP_DIR, 'static'),
]
STATIC_ROOT = path.join(TOP_DIR, 'staticfiles')
STATIC_URL = '/static/'
これは、そのディレクトリを見つけるのに役立ちます。
また、STATIC URL
を使用して常に静的ファイルにアクセスする必要があります。
<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css">
私の場合、サーバーを再実行するだけで済みました。
python manage.py runserver
Settings.pyファイルにアプリINSTALLED_APPSを入れ忘れたと思うので、「mealmate」を追加する必要があります
INSTALLED_APPS = (
'mealmate',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.sites',
'Django.contrib.messages',
'Django.contrib.staticfiles',
)
その後、静的ファイルとコマンドファイルがDjangoに表示されます。私はコマンドに問題があり、これが私が修正した方法です。