Django 1.7静态文件目录扫描

Django 1.7 static files directory scanning

从事个人项目并尝试使用 ajax/jquery 为图像编写目录扫描器,以使用 Django 1.7 在网页上创建幻灯片。

我在尝试查看包含图像的目录时遇到标准 "Directory indexes are not allowed here." 错误。每个图像本身都由静态文件应用程序正确提供,但我无法查看目录以循环浏览它们。

我的 settings.py 文件具有以下静态属性。

STATIC_URL = '/resources/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "resources"),os.path.join(BASE_DIR, "<app_name>/resources"),)
STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
)

图片位于 BASE_DIR/resources/img/frontpage/slideshow/img_name.jpg

我可以自己加载每个图像,但是 url localhost:8000/resources/img/frontpage/slideshow/ returns "Directory indexes are not allowed here." 错误。

我已经解决了其他几个堆栈溢出的问题,none 已经解决了这个问题,所以我正在寻求更有经验的 django 开发人员的帮助。

在settings.py

STATIC_URL = '/static/'
STATIC_ROOT = PROJECT_DIR +  '/static/'

在(正确配置的)生产设置中,静态文件不是由 Django 提供,而是由某些前端服务器(nginx、apache 等)提供,因此目录列表是在前端服务器上配置的。使用内置开发服务器时,通常使用 django 的 staticfiles 应用程序来提供静态文件。此应用程序没有任何目录列表视图,但您可以轻松编写一个并将其添加到您的 urls.py.

这就是说,依靠前端服务器的目录列表扫描充其量是脆弱的 - 您取决于允许的目录列表和特定服务器的实现。你为什么不写一个 Django 视图返回目录的 json 列表?与将代码写入 "scan" 目录列表相比,这将花费更少的时间,并且更加健壮。