56

ローカルマシン(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を初めて使用するので、おそらく単純なものが欠けています。助けていただければ幸いです。

4

20 に答える 20

86

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

あなたの中にいdjango.contrib.staticfilesますか?INSTALLED_APPSsettings.py

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

python manage.py runserver --insecure

collectstatic開発サーバーを介したファイルの提供には関係ありません。STATIC_ROOTこれは、Webサーバーが静的ファイルを見つけるために1つの場所に静的ファイルを収集するためのものです。実際、セットをパスに設定して実行collectstaticすることはお勧めできません。CSSファイルが現在も存在することを再確認する必要があります。STATIC_ROOTSTATICFILES_DIRS

于 2011-09-27T19:53:38.217 に答える
37

Djangoの最近のリリースでは、静的ファイルを次のように構成する必要がありますsettings.py

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' %}">
于 2017-08-28T12:12:50.833 に答える
8

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

$ python manage.py runserver

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

于 2016-06-14T20:48:58.467 に答える
3

これらはあなたから欠落しています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'}
))
于 2011-09-27T20:04:17.297 に答える
3

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

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

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

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

{% load static %}
  <img src="{% static "images/index.jpeg" %}" alt="My image"/>
于 2017-09-25T09:22:17.363 に答える
2

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

于 2014-03-31T13:23:34.900 に答える
2

追加した

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

から削除さSTATIC_ROOTsettings.py、それは私のために働いた

于 2015-08-19T10:52:52.763 に答える
2

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

私はDjango1.10を使用しています。

  1. static同じレベルのフォルダを作成しますsettings.py。私settings.pyのパスは~/djcode/mysite/mysite/settings.py、なので、このディレクトリは~/djcode/mysite/mysite/static/;です。
  2. 2つのフォルダstatic_dirsを作成し、static_rootstatic、それは~/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. フォルダcssを作成static_dirsして独自のファイルに入れると.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

ビンゴ!

于 2016-09-06T10:30:52.343 に答える
0

あなたはSTATICFILES_DIRSとSTATIC_ROOTで同じパスを持っていました、私は同じ問題に遭遇しました、そして以下は例外でした-

不適切に構成:STATICFILES_DIRS設定にSTATIC_ROOT設定を含めることはできません

ローカルの場合、collectstaticを実行する必要がないため、STATICFILES_DIRSは必要ありません。コメントすると、正常に機能するはずです。

于 2013-02-16T01:17:53.547 に答える
0

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

{% load staticfiles %}

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

于 2013-04-11T08:06:39.367 に答える
0

このモデルを試してみましたが、うまくいきました。

シェルで作成されたdjangoプロジェクトによる設定の変更

"django-admin.py startproject xxx"# here xxx is my app name

サーバーで実行する静的ファイルをロードする以下の構造のようにフォルダーを変更します

xxxの構造は次のとおりです。

>     .
>     |-- manage.py
>     |-- templates
>     |   `-- home.html
>     `-- test_project
>         |-- __init__.py
>         |-- settings.py
>         |-- static
>         |   |-- images
>         |   |   `-- 01.jpg
>         |   |-- style.css
>         |-- urls.py
>         `-- wsgi.py

--Settings.pyの変更

import os
INSTALLED_APPS = (    'xxx',# my app is to be load into it)

STATIC_ROOT = ''
STATIC_URL = '/static/'
PROJECT_DIR = os.path.dirname(__file__)
TEMPLATE_DIRS = (      os.path.join(PROJECT_DIR, '../templates'),)#include this 

-urls.pyの変更

from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView

class DirectTemplateView(TemplateView):
    extra_context = None
    def get_context_data(self, **kwargs):
        context = super(self.__class__, self).get_context_data(**kwargs)
        if self.extra_context is not None:
            for key, value in self.extra_context.items():
                if callable(value):
                    context[key] = value()
                else:
                    context[key] = value
        return context

urlpatterns = patterns('', 
    url(r'^$', DirectTemplateView.as_view(template_name="home.html")), )

--home.html

<html>
    <head>
        <link href="{{STATIC_URL}}style.css" rel="stylesheet" type="text/css">
    </head>
    <body>
        <h1>This is home for some_app</h1>
      <img src="{{STATIC_URL}}/images/01.jpg" width=150px;height=150px; alt="Smiley ">
    </body>
</html>
于 2013-11-09T05:53:49.857 に答える
0

私は使用しなければなりませんでした

STATICFILES_DIRS = ( '/home/USERNAME/webapps/django/PROJECT/static/', )

それは私を助けました。

于 2014-05-07T06:41:11.080 に答える
0

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

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

于 2015-06-19T16:43:13.447 に答える
0

"django.core.context_processors.static",このコンテキストプロセッサをsettings.pyに追加します

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

)。

于 2017-04-04T06:47:21.740 に答える
0

ローカルホストで実行しているかサーバーで実行しているかに応じて、STATIC_ROOTを設定できます。それを特定するには、この投稿を参照してください。

また、STATIC_ROOT構成を次のように書き換えることができます。

import sys

if 'runserver' in sys.argv:
    STATIC_ROOT = ''
else:
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
于 2019-04-05T15:23:29.493 に答える
0

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

于 2019-07-10T10:35:52.970 に答える
0

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

これは私を助けました

python manage.py collectstatic --noinput

于 2019-08-04T08:51:57.013 に答える
0

settings.pyに以下を追加します

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')  
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
于 2019-08-08T20:40:06.927 に答える
0

Djangoアプリケーションで静的ファイルを実行する際に注意すべき2つの最も基本的なポイントは次のとおりです-ファイル内の静的ファイルパスを宣言しsettings.pyます

STATIC_URL = '/static/'

もう1つの重要なパラメータは、staticキーワードを使用しているWebページです。静的ファイルをロードする必要があります。

{% load static %}
于 2020-09-03T11:11:45.000 に答える
0

HTMLページに移動します。

{% load static %}

今私が犯した唯一の間違いはこれでした

私のコード:

<img src="**{% static** "images/index.jpeg" %}" alt="My image">

更新しました:

<img src=**"{% static 'images/index.jpeg' %}' alt="My image"**>

あなたはそれを正しく理解します

于 2020-09-27T18:55:12.520 に答える