8

Django の組み込み Web サーバーを DEBUG モードで使用しています。

これは私の一部ですsettings.py

STATIC_ROOT = '/home/user/static_root'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    '/abs/path/to/static/dir',
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

にアクセスするhttp://localhost:8000/static/png/と、 で利用可能なファイルのリストが表示されると思います/abs/path/to/static/dir/png代わりに、 「ディレクトリ インデックスはここでは許可されていません」という 404 エラーが表示されます。

ファイルに直接アクセスすると、たとえばhttp://localhost:8000/static/png/test.png、動作します。

私はすでにいくつかの回答(here)をチェックしましたが、成功しませんでした。

staticfilesでは、アプリがディレクトリの内容を一覧表示するように Django を構成する方法を知っている人はいますか?

4

4 に答える 4

12

他の人を助けるかもしれないので完全を期すために、これは私が問題を解決するためにしたことです。

@Heddeの答えに続いて、私は使用しましたshow_indexes

設定.py

  • すべての構成を同じに保ちます (つまり、すべてのSTATIC*変数)
  • 'django.contrib.staticfiles'から削除INSTALLED_APPS

show_indexes問題は、静的ファイル構成用の Django の「組み込み」メソッドを使用してパラメーターを指定できないことです (経由settings.py)。を含めること'django.contrib.staticfiles'で、Django はmy を無視してINSTALLED_APPSで静的ファイル ハンドラを作成します。show_indexes = Falseurlpatterns

urls.py

urlpatterns に以下を追加しました。

url(regex  = r'^%s(?P<path>.*)$' % settings.STATIC_URL[1:], 
    view   = 'django.views.static.serve', 
    kwargs = {'document_root': '/abs/path/to/static/dir',
              'show_indexes' : True})
于 2013-05-15T13:50:04.807 に答える
6
'show_indexes': True

ドキュメントによると

于 2013-05-15T12:28:43.950 に答える
1

これらのファイルは、django によって提供されることを意図していません。インデックスの表示は、apache/nginx の構成パラメーターです。

本番環境では、nginx を使用して、静的サービング パーツに追加するだけです。

    location ^~ /static/ {
            autoindex on;
            root /var/www/static_dir;
            if ($query_string) {
                    expires max;
            }
    }

開発環境の場合、Hedde の回答は確かに良い回答ですが、表示は HTTP サーバーによって提供されるものとまったく同じではない場合があります。ルックアンドフィールに依存しないでください。

于 2013-05-15T12:27:16.487 に答える
1

https://docs.djangoproject.com/en/1.5/ref/views/#django.views.static.serveから...

static.serve(request, path, document_root, show_indexes=True)  
于 2013-05-15T12:30:37.573 に答える