Django错误中的“这里不允许目录索引”是什么意思?

6yjfywim  于 2023-02-17  发布在  Go
关注(0)|答案(4)|浏览(480)

我正在调试Django应用程序中出现的这个奇怪的404错误。

Page not found (404)
Request Method: GET
Request URL:    http://78.198.124.245/
Directory indexes are not allowed here.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

“此处不允许目录索引”是什么意思?什么是目录索引?
我在Google上搜索了一下,发现结果都是关于静态文件的。但是,我不认为我这样做了。这个错误是什么意思?

ycl3bljg

ycl3bljg1#

检查settings.py文件中的STATIC_URL值。您希望该值为存储静态文件的子文件夹-通常为STATIC_URL = '/static/'

gmxoilav

gmxoilav2#

答案取决于你使用的django版本。对于1.4+版本,只需设置STATIC_URL
对于1.3.x,与其说STATIC_URL设置为什么,不如说ADMIN_MEDIA_PREFIX设置为什么。
如果您将其设置为/admin/,那么django development server将尝试为contrib/admin/media/文件夹中/admin/下的所有内容提供静态文件
这意味着http://127.0.0.0:8000/admin/postz/post/473将尝试在django/contrib/admin/media/postz/post/473中查找静态内容,这就是404
如果您尝试访问http://127.0.0.0:8000/admin/,那么这将是admin媒体目录中的index.html,但内部静态服务器不允许索引,因此它会抛出此错误。
可接受的答案并不完全正确。设置STATIC_URL可能是一个副作用,但真实的的问题是ADMIN_MEDIA_PREFIX是错误的。
最佳设置为:

ADMIN_MEDIA_PREFIX = '/media/'

ADMIN_MEDIA_PREFIX = '/admin/media/'

对于1.4,只需设置STATIC_URL,因为ADMIN_MEDIA_PREFIX已弃用
https://docs.djangoproject.com/en/dev/releases/1.4/#django-contrib-admin

tuwxkamq

tuwxkamq3#

我以前也遇到过同样的问题,我也在寻找答案,但没有找到任何有用的东西。然而,我的问题是我在应用程序的url文件中输入的路径名称与视图中的函数名称不匹配。

path('home-en', views.home_en, name="home")

这里的'home-en'应该是'home_en'以匹配视图函数的名称。

gzjq41n4

gzjq41n44#

得到这个错误的原因是,也许试图Map我们的视图与自定义的网址,幸运的是一个目录名。所以在这种情况下,例如:我们将所有静态文件存储在名为Static的文件夹中,并尝试创建URL:path('static/',views.static_view).所以在这种情况下它不会工作.我们可以做的是,我们可以将自定义url更改为任何通用url,如'inex/',它将工作.

相关问题