Django 1.7静态文件目录扫描

时间:2015-07-17 04:56:37

标签: python django django-staticfiles static-files

处理个人项目并尝试使用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 /资源/ IMG /头版/幻灯片/ img_name.jpg

我可以加载每个图像本身,但是url localhost:8000 / resources / img / frontpage / slideshow /返回“此处不允许使用目录索引”。错误。

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

2 个答案:

答案 0 :(得分:2)

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

话虽这么说,依靠前端服务器的目录列表扫描最多是脆弱的 - 你依赖于允许的目录列表和特定服务器的实现。为什么不写一个Django视图返回该目录的json列表?将代码写入扫描&#34;扫描&#34;目录列表,将更加健壮。

答案 1 :(得分:0)

在settings.py

In [1]: import pandas as pd

In [2]: df = pd.DataFrame(pd.np.random.rand(1000000, 5))

In [3]: timeit df['empty1'] = pd.np.empty((len(df), 0)).tolist()
10 loops, best of 3: 127 ms per loop

In [4]: timeit df['empty2'] = [[] for _ in range(len(df))]
10 loops, best of 3: 193 ms per loop

In [5]: timeit df['empty3'] = df.apply(lambda x: [], axis=1)
1 loops, best of 3: 5.89 s per loop