В Django whitenoise не показывает статические файлы
Это мой первый раз, когда я использую whitenoise. При выполнении DEBUG=FALSE
я не могу увидеть изображения даже после выполнения python manage.py collectstatic
. Все статические файлы передаются в каталог, указанный в директории STATIC_ROOT
после collectstatic, но на сайте появляется ошибка Not Found.
Мой settings.py
:
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = os.environ.get('SECRET_KEY')
DEBUG = False
INSTALLED_APPS = [
'whitenoise.runserver_nostatic',
'phonenumber_field',
'ramrobazar.account.apps.AccountConfig',
'ramrobazar.dashboard.apps.DashboardConfig',
'ramrobazar.inventory.apps.InventoryConfig',
'ramrobazar.drf.apps.DrfConfig',
'ramrobazar.demo.apps.DemoConfig',
'mptt',
# 'django_elasticsearch_dsl',
'rest_framework',
'rest_framework.authtoken',
'rest_framework_simplejwt.token_blacklist',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
STATIC_URL = 'static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_URL = 'images/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images')
Мой корень urls.py
:
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('ramrobazar.drf.urls')),
path('api-auth/', include('rest_framework.urls')),
path('demo/', include('ramrobazar.demo.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
Когда я запускаю 'collectstatic', все статические файлы передаются в BASE_DIR/'staticfiles'
, поскольку это путь, указанный в STATIC_ROOT
в settings.py. Но когда я запускаю python manage.py runserver --nostatic
и пытаюсь получить доступ к изображениям на сайте, он показывает
Not Found
The requested resource was not found on this server.
Я не знаю, в чем проблема. Пожалуйста, дайте любое ваше предложение.