Django, почему URL-адреса мультимедийных изображений не работают в рабочей среде?

#django #django-urls #production #pythonanywhere #django-uploads

#django #django-urls #производство #pythonanywhere #django-загрузки

Вопрос:

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

settings.py

 DEBUG = False

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'core.apps.CoreConfig',
    'unities.apps.UnitiesConfig',
    'ckeditor',
    'ckeditor_uploader',
    'django_cleanup.apps.CleanupConfig'
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    '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',
    'whitenoise.middleware.WhiteNoiseMiddleware',
]

...

STATIC_URL = '/static/'

STATIC_ROOT= os.path.join(BASE_DIR,'staticfiles')

STATICFILES_DIRS=(
    os.path.join(BASE_DIR,'static'),
)

STATICFILES_STORAGE='whitenoise.storage.CompressedManifestStaticFilesStorage'

# Media files

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# CKEditor Settings

CKEDITOR_ALLOW_NONIMAGE_FILES = False
CKEDITOR_UPLOAD_PATH = 'ckeditor_uploads/'
 

urls.py

 urlpatterns = [
    path('ckeditor/', include('ckeditor_uploader.urls')),
    path('admin/', admin.site.urls),
    path('', include('core.urls')),
    path('<slug:unity_slug>/', include('unities.urls')),
]

urlpatterns  = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns  = static(settings.STATIC_URL,document_root=settings.STATIC_ROOT
 

Я использую pythonanywhere

Комментарии:

1. Я импортировал статику в urls.py

2. Вы просматривали журнал доступа к веб-серверу, чтобы увидеть фактический URL-адрес, запрашиваемый для изображений? И если да, то правильный ли это URL-адрес?

3. Я так не думал, я проверю это

4. Допустим, изображения загружаются в каталог media / uploaded_images. и имя изображения — test_image.png, URL-адрес, который вы должны увидеть в атрибуте src тега img, должен быть /media/uploaded_images/test_image.png . Проверьте src attr тега <img> . какой источник вы предоставляете? image.name или image.url ?

5. Возможно, это просто ошибка копирования-вставки, но у вас отсутствует paren в urlpatterns для STATIC_URL. Btw. вы смотрели страницу справки PythonAnywhere для отладки статических файлов?

Ответ №1:

вы импортировали свою статику поверх urls.py ? Я использую django3.0

 from django.conf.urls.static import static
 

и для нижней части urls.py Я бы закодировал так

 if settings.DEBUG:
    urlpatterns  = static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)
 

для settings.py Я только так кодирую

 STATIC_URL = '/static/'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
 

Комментарии:

1. Да, я импортировал статику в urls.py

2. У меня есть checkit, и у меня это так же