web-dev-qa-db-ja.com

Django-静的CSSファイルを取得できません

ローカルマシン(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が初めてなので、おそらく簡単なものが欠けています。

48
tchaymore

これを注意深く読んでください: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/

Django.contrib.staticfilesINSTALLED_APPSsettings.pyにありますか?

DEBUG=Falseですか?その場合、--insecureパラメーターを指定してrunserverを呼び出す必要があります。

python manage.py runserver --insecure

collectstaticは、開発サーバーを介したファイルの提供には影響しません。 Webサーバーがそれらを見つけるための1つの場所STATIC_ROOTに静的ファイルを収集するためです。実際、STATIC_ROOTのパスにSTATICFILES_DIRSを設定してcollectstaticを実行するのは悪い考えです。 CSSファイルが今でも存在することを確認するために、再確認する必要があります。

70
GDorn

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' %}">
20

もう1つの簡単な方法は、サーバーを停止してから再起動することです。

$ python manage.py runserver

他の答えを調べましたが、サーバーの再起動はうまくいきました。

5
ibowman

次のコードをsettings.pyに追加します。

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

その後、プロジェクトのルートディレクトリに静的フォルダーを作成します。

テンプレートに静的ファイルをロードするには、次を使用します。

{% load static %}
  <img src="{% static "images/index.jpeg" %}" alt="My image"/>
4
Alan Paul

これらはあなたの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'}
))
3
Geo

追加しました

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, "static"), )

削除されたSTATIC_ROOT from settings.py、それは私のために働いた

2
Vinner

これらの手順は私にとってはうまくいきます。Djangoで 静的ファイル(CSS、JS、および画像)を読み込む を参照してください。

Django 1.10。

  1. settings.pyと同じレベルにフォルダーstaticを作成します。私のsettings.pyのパスは~/djcode/mysite/mysite/settings.pyです。したがって、このディレクトリは~/djcode/mysite/mysite/static/です。
  2. staticstatic_dirsstatic_rootという2つのフォルダー~/djcode/mysite/mysite/static/static_dirs/~/djcode/mysite/mysite/static/static_root/を作成します。
  3. 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'),
    )
    
  4. シェルでこのコマンド$ python manage.py collectstaticを実行します。

  5. static_dirsにフォルダーcssを作成し、独自の.cssファイルに入れます。cssファイルのパスは~/djcode/mysite/mysite/static/static_dirs/css/my_style.cssです。

  6. <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です

ビンゴ!

2
Belter

DEBUG = True私のローカル設定でそれは私のためにそれをしました。

2
webjay

settings.pyに以下を追加してください

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')  
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
0
Amandeep Singh

STATICFILES_DIRSとSTATIC_ROOTに同じパスがあり、同じ問題に遭遇しましたが、以下は例外でした-

不適切な構成:STATICFILES_DIRS設定にSTATIC_ROOT設定を含めないでください

ローカルでは、とにかくcollectstaticを実行する必要がないため、STATICFILES_DIRSは必要ありません。コメントすると、問題なく動作するはずです。

0
Mutant

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/'
0
Aslamah Rahman

これを追加 "Django.core.context_processors.static", settings.pyのコンテキストプロセッサ

TEMPLATE_CONTEXT_PROCESSORS = (
"Django.core.context_processors.static",

0
cjahangir

私は同じ問題を抱えています(ununtu 16.04サーバー)。

これは私を助けました

python manage.py collectstatic --noinput

0
alcoder

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}),

0
Thusitha Deepal

テンプレートに追加しましたか:

{% load staticfiles %}

これは必要なものをロードしますが、何らかの理由で私は時々これがなくても動作することを経験しました... ???

0
viridis

メインアプリケーション(静的ディレクトリがある場所)がINSTALLED_APPSに含まれているかどうかを確認します。

ファイルは、有効なファインダーを使用して検索されます。デフォルトでは、STATICFILES_DIRSで定義されたすべての場所と、INSTALLED_APPS設定で指定されたアプリの「静的」ディレクトリを検索します。

0
Guy de Carufel