Что означает "Каталог индексов здесь не разрешен". значит в ошибке Django?

Я пытаюсь отладить эту странную ошибку 404, которая появилась в моем приложении Django.

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.

Что означает "Каталог индексов здесь не разрешен". имею в виду? Что такое индекс каталога?

Я погуглил, и результаты, которые я нашел, имеют отношение к обслуживанию статических файлов. Тем не менее, я не думаю, что я делаю это. Что означает эта ошибка?

4 ответа

Решение

Проверьте в файле settings.py значение STATIC_URL. Вы хотите, чтобы значение было подпапкой, где хранятся ваши статические файлы - как правило, STATIC_URL = '/static/',

Ответ зависит от того, какую версию django вы используете. Для 1.4+ тогда просто установите STATIC_URL

Для 1.3.х это не так много, как STATIC_URL устанавливается как то, что ваш ADMIN_MEDIA_PREFIX установлено в.

Если вы установите его /admin/ тогда сервер разработки django попытается обслуживать статические файлы для всего /admin/ вне contrib/admin/media/ папка

Это означает, что 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/ тогда это будет 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/

У меня была такая же проблема некоторое время назад, и я тоже искал ответ, но не нашел ничего полезного. Однако проблема для меня заключалась в том, что имя, которое я ввел в пути в файле URL-адресов в моем приложении, не соответствовало имени функции в представлениях.

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

Здесь 'home-en' должно было быть 'home_en', чтобы соответствовать имени функции представления.

Причина получения этой ошибки заключается в том, что, возможно, мы пытаемся сопоставить наше представление с пользовательским URL-адресом, который, к счастью, является именем каталога. так что в этом случае, например: мы храним все наши статические файлы в папке со статическим именем и пытаемся создать URL: path('static/',views.static_view). Так что в этом случае не получится. что мы можем сделать, мы можем изменить пользовательский URL-адрес на любой общий URL-адрес, такой как «inex/», и он будет работать.

Другие вопросы по тегам