如何配置Django的"staticfiles"应用程序列出目录内容?

E.Z*_*.Z. 5 django django-1.5

我在DEBUG模式下使用Django的内置Web服务器.

这是我的一部分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',
)
Run Code Online (Sandbox Code Playgroud)

如果我访问http://localhost:8000/static/png/,我希望看到可用的文件列表/abs/path/to/static/dir/png.相反,我收到404错误"此处不允许使用目录索引."

现在,如果我直接访问文件,例如http://localhost:8000/static/png/test.png,它可以工作.

我已经检查了一些答案(这里)没有成功.

那么,有没有人知道如何配置Django使staticfiles应用程序列出目录内容?

E.Z*_*.Z. 7

只是为了完整性,因为它可以帮助其他人,这就是我为解决问题所做的.

按照@Hedde的回答,我去了show_indexes:

settings.py

  • 保持所有配置相同(即所有STATIC*变量)
  • 删除'django.contrib.staticfiles'INSTALLED_APPS

问题是我无法show_indexes使用Django的"内置"方法为静态文件配置(via settings.py)指定参数.通过'django.contrib.staticfiles'进入INSTALLED_APPS,Django将创建静态文件处理程序show_indexes = False,忽略我的urlpatterns.

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})
Run Code Online (Sandbox Code Playgroud)