【问题标题】:Django 1.7 static files directory scanning [duplicate]Django 1.7静态文件目录扫描[重复]
【发布时间】:2015-10-06 18:00:16
【问题描述】:

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

我收到标准的“此处不允许使用目录索引”。尝试查看包含图像的目录时出错。每个图像本身都由静态文件应用程序正确提供,但我无法查看目录以循环它们。

我的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/ 返回“此处不允许目录索引”。错误。

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

【问题讨论】:

  • settings.xml 还是settings.py?一般设置STATIC_URL='/resources/' in settings.py`应该可以工作。
  • 设置在我的settings.py文件中定义。

标签: python django django-staticfiles static-files


【解决方案1】:

在 settings.py 中

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我更喜欢这个解决方案,而不是在 JS 中做。谢谢!
    猜你喜欢
    • 2014-12-22
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2021-02-05
    • 2017-07-21
    相关资源
    最近更新 更多