12

私はこの質問の指示、ドキュメント、そしてこれを見たことがありますが、これまでのところ、を使用して静的ファイルを取得することはできませんpython manage.py runserver

これらは私の(関連する?)設定です:

STATIC_ROOT '/home/wayne/programming/somesite/static'
STATICFILES_DIRS ('/home/wayne/programming/somesite/static/styles',
                  '/home/wayne/programming/somesite/static/admin')

私のurls.pyで:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# The rest of my urls here...
if settings.DEBUG:
    urlpatterns += staticfiles_urlpatterns()

base.htmlに次のコードがあります

    <link rel="stylesheet" type="text/css" href="{% static "styles/main.css" %}">
    {% block styles %}
    {% for sheet in styles %}
    <link rel="stylesheet" type="text/css" href="{% static sheet %}">
    {% endfor %}

そして、私は幻覚を起こさないことを約束します:

(.env)wayne:~/programming/somesite/static$ pwd 
/home/wayne/programming/somesite/static 
(.env)wayne:~/programming/somesite/static$ ls 
admin  styles 

ただし、http://localhost:8000/自分のサイトに移動するとスタイルシートが失われ、に移動すると、に移動しようとするとhttp://localhost:8000/static/styles/main.css、ディレクトリインデックスが許可されていないことがわかります。'styles/main.css' could not be foundlocalhost:8000/static/localhost:8000/static/styles

ここで何が欠けていますか?

4

1 に答える 1

15

Djangoの静的ファイルの処理は、特に関連する設定の命名に関して、引き続き少し混乱しています。

簡単な答えは、静的ファイルを移動することです。それ以外の

/home/wayne/programming/somesite/static

それらを入れます

/home/wayne/programming/somesite/yourapp/static

(ここで、「yourapp」は明らかにメインアプリケーションの名前です)。

より長い答えは、あなたが(当然のことながら)さまざまな設定について混乱していると思うということです。を実行した後に静的ファイルが終了する場所STATIC_ROOT のみを指します。ローカルで開発する場合は、このセットは必要ありません(実際には必要ないはずです)。いずれにせよ、常に空のディレクトリを参照する必要があります。manage.py collectstaticcollectstaticSTATIC_ROOT

静的STATICFILES_DIRSファイルを見つける必要がある2つのパスがあることをDjangoに伝えたことを除いて、設定はほぼ機能します

/home/wayne/programming/somesite/static/styles
/home/wayne/programming/somesite/static/admin

だからあなたがするとき{% static "styles/main.css" %}それは探します

/home/wayne/programming/somesite/static/styles/styles/main.css
/home/wayne/programming/somesite/static/admin/styles/main.css

そして明らかにそれらを見つけることはありません。うまくいくかもしれない

STATICFILES_DIRS = ('/home/wayne/programming/somesite/static',)

django.contrib.staticfiles.finders.AppDirectoriesFinderただし、 (デフォルトのSTATICFILES_FINDERSで)信頼して静的ファイルをアプリディレクトリに移動できるため、これを行う必要はありません。

これで少し問題が解決することを願っています。

于 2012-08-19T19:14:12.317 に答える