13

テンプレートから静的ファイルをロードできないようです。公式ドキュメントに従っていますが、何か不足しているに違いありません。

私のディレクトリレイアウト(Djangoによって生成され、ほとんどのファイルは省略されています):

myproject
  myproject
    settings.py
    urls.py
  static
    css
      bootstrap.css
      main.css
  templates
    base.html
  myapp1
  myapp2
  ...
  manage.py

私のsettings.py

STATIC_URL = 'static/'

私は自分のスタイルシートを次のように参照しています(私のテンプレートから):

{% load staticfiles %}
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}" type="text/css">
<link rel="stylesheet" href="{% static "css/style.css" %}" type="text/css"> 

これにより、(HTML で) レンダリングされると、次のようになります。

<link rel="stylesheet" href="static/css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="static/css/style.css" type="text/css"> 

しかし、これらのリンクは実際にはどこにもつながっていません (それらにアクセスすると、Django から 404 エラーが発生します)。に何かを追加することでこれを修正できるurls.pyと思いますが、サーバーを実行するとDjangoが自動的にこれを行うと思いましたか? 私は何が欠けていますか?

4

8 に答える 8

22

静的ファイルディレクトリをで定義しましたsettings.pyか?

インストールされて'django.contrib.staticfiles',いるアプリにあると思います。

静的ファイルディレクトリを定義していない場合は、次のようにすることができます。

import os.path

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)
于 2012-04-15T20:31:05.983 に答える
3

これは、Windows 用の django での静的/メディア/テンプレート アクセスの有効なソリューションです。

設定.py

import os.path

STATIC_ROOT = ''

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join('static'),
)
于 2013-06-13T06:43:54.563 に答える
3

私の問題は、settings.pyファイルに「STATICFILES_DIRS」を追加することで解決しました

STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
于 2016-08-21T19:35:29.110 に答える
1

サーバーを実行すると、Djangoがこれを自動的に行うと思いましたか?

なぜそう思ったのですか?公式ドキュメントに従った場合、それは見つかりません。開発で彼らにサービスを提供するために何をしなければならないかについては、こちらを参照してください。

別の問題があります。YourSTATIC_URLは相対リンクであるため、ブラウザーはそれを既存のページ URL に追加します。したがって、ページ/fooにいる場合、 は と'static/css/style.css'評価され/foo/static/css/style.css'ます。

-ie- で始まるか、完全な URL である/ことを確認してください。/static/http://myserver.com/static/

于 2012-04-15T20:17:40.790 に答える
1

STATICFILES_FINDERSが定義されているかどうかを確認しますsettings.py

https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_FINDERS

のデフォルト値でSTATICFILES_FINDERS十分ですが、2 つの選択肢があります。

  • アプリ内に静的ファイルがあり、このアプリがあなたの中にある必要がありますINSTALLED_APPS

  • STATICFILES_DIRSまたは、動作が次のいずれかであると予想される場合は、静的ファイルへのパスを定義する必要がありますdjango.contrib.staticfiles.finders.FileSystemFinder

于 2012-04-15T20:38:03.903 に答える
-6

私の解決策はDEBUG = True設定にありました。

于 2017-10-09T13:21:10.877 に答える