ローカルマシン(Mac OS X)でDjangoの開発サーバー(runserver
)を実行していますが、CSSファイルをロードできません。
Settings.pyの関連エントリは次のとおりです。
STATIC_ROOT = '/Users/username/Projects/mysite/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/Users/thaymore/Projects/mysite/cal/static',
)
STATICFILES_FINDERS = (
'Django.contrib.staticfiles.finders.FileSystemFinder',
'Django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'Django.contrib.staticfiles.finders.DefaultStorageFinder',
)
INSTALLED_APPS = (
# other apps ...
'Django.contrib.staticfiles',
)
私のviews.pyでは、コンテキストをリクエストしています:
return render_to_response("cal/main.html",dict(entries=entries),context_instance=RequestContext(request))
そして、私のテンプレートでは、{{ STATIC_URL }}
は正しくレンダリングされます。
<link type="text/css" href="{{ STATIC_URL }}css/main.css" />
に変わる:
<link type="text/css" href="/static/css/main.css"/>
ファイルが実際に配置されている場所です。また、collectstatic
を実行して、すべてのファイルが収集されたことを確認しました。
また、urls.pyには次の行があります。
from Django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
私はDjangoが初めてなので、おそらく簡単なものが欠けています。
これを注意深く読んでください: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/
Django.contrib.staticfiles
はINSTALLED_APPS
にsettings.py
にありますか?
DEBUG=False
ですか?その場合、--insecure
パラメーターを指定してrunserver
を呼び出す必要があります。
python manage.py runserver --insecure
collectstatic
は、開発サーバーを介したファイルの提供には影響しません。 Webサーバーがそれらを見つけるための1つの場所STATIC_ROOT
に静的ファイルを収集するためです。実際、STATIC_ROOT
のパスにSTATICFILES_DIRS
を設定してcollectstatic
を実行するのは悪い考えです。 CSSファイルが今でも存在することを確認するために、再確認する必要があります。
Django 1.11.x +では、settings.py
as、
STATIC_URL = '/static/' # the path in url
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
静的テンプレートタグで使用します。
{% load static %}
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
もう1つの簡単な方法は、サーバーを停止してから再起動することです。
$ python manage.py runserver
他の答えを調べましたが、サーバーの再起動はうまくいきました。
次のコードをsettings.py
に追加します。
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
その後、プロジェクトのルートディレクトリに静的フォルダーを作成します。
テンプレートに静的ファイルをロードするには、次を使用します。
{% load static %}
<img src="{% static "images/index.jpeg" %}" alt="My image"/>
これらはあなたのsettings.py
?プロジェクトの設定の1つを貼り付けています。
TEMPLATE_CONTEXT_PROCESSORS = ("Django.contrib.auth.context_processors.auth",
"Django.core.context_processors.debug",
"Django.core.context_processors.i18n",
"Django.core.context_processors.media",
"Django.core.context_processors.static",
"Django.contrib.messages.context_processors.messages")
また、これは私のurls.py
:
urlpatterns += patterns('', (
r'^static/(?P<path>.*)$',
'Django.views.static.serve',
{'document_root': 'static'}
))
追加しました
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, "static"), )
削除されたSTATIC_ROOT
from settings.py
、それは私のために働いた
これらの手順は私にとってはうまくいきます。Djangoで 静的ファイル(CSS、JS、および画像)を読み込む を参照してください。
Django 1.10。
settings.py
と同じレベルにフォルダーstatic
を作成します。私のsettings.py
のパスは~/djcode/mysite/mysite/settings.py
です。したがって、このディレクトリは~/djcode/mysite/mysite/static/
です。static
にstatic_dirs
とstatic_root
という2つのフォルダー~/djcode/mysite/mysite/static/static_dirs/
と~/djcode/mysite/mysite/static/static_root/
を作成します。settings.py
を次のように記述します。
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'mysite', 'static', 'static_root')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'mysite', 'static', 'static_dirs'),
)
シェルでこのコマンド$ python manage.py collectstatic
を実行します。
static_dirs
にフォルダーcss
を作成し、独自の.css
ファイルに入れます。cssファイルのパスは~/djcode/mysite/mysite/static/static_dirs/css/my_style.css
です。
<link>
ファイルの.html
タグを変更:<link rel="stylesheet" type="text/css" href="{% static 'css/my_style.css' %}">
、
最後に、このリンクのパスはhttp://192.168.1.100:8023/static/css/my_style.css
です
ビンゴ!
DEBUG = True
私のローカル設定でそれは私のためにそれをしました。
settings.pyに以下を追加してください
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_DIRSとSTATIC_ROOTに同じパスがあり、同じ問題に遭遇しましたが、以下は例外でした-
不適切な構成:STATICFILES_DIRS設定にSTATIC_ROOT設定を含めないでください
ローカルでは、とにかくcollectstaticを実行する必要がないため、STATICFILES_DIRSは必要ありません。コメントすると、問題なく動作するはずです。
Localhostまたはサーバーのどちらで実行しているかに応じて、STATIC_ROOTを設定するだけです。それを識別するには、これを参照してください post 。
また、STATIC_ROOT構成を次のように書き換えることができます。
import sys
if 'runserver' in sys.argv:
STATIC_ROOT = ''
else:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
これを追加 "Django.core.context_processors.static",
settings.pyのコンテキストプロセッサ
TEMPLATE_CONTEXT_PROCESSORS = (
"Django.core.context_processors.static",
)
私は同じ問題を抱えています(ununtu 16.04サーバー)。
これは私を助けました
python manage.py collectstatic --noinput
DEBUG = FALSEを設定する場合は、手順に従う必要があります
Urls.pyファイルで:この行を追加します
from Django.views.static import serve
url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),
テンプレートに追加しましたか:
{% load staticfiles %}
これは必要なものをロードしますが、何らかの理由で私は時々これがなくても動作することを経験しました... ???
メインアプリケーション(静的ディレクトリがある場所)がINSTALLED_APPSに含まれているかどうかを確認します。
ファイルは、有効なファインダーを使用して検索されます。デフォルトでは、STATICFILES_DIRSで定義されたすべての場所と、INSTALLED_APPS設定で指定されたアプリの「静的」ディレクトリを検索します。