Ошибка страницы 404 при переходе по ссылке на изображение на сайте администраторов django

У нас есть проект django, в котором мы храним изображения в бэкенде, используя поле image. Ссылка на изображение хранится на сайте администратора django. Однако, когда я нажимаю на ссылку, я получаю страницу ошибки. Вот мой код. models.py

  images=models.ImageField(upload_to=upload_to,null=True)

    def upload_to(instance, filename):
        return 'images/{filename}'.format(filename=filename)

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app/',include('firstapp.urls')),
    path('',include('firstapp.api.urls')),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py

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

# URL used to access the media
MEDIA_URL = '/media/'

Я создал папку с именем media, но изображения не сохраняются в ней. Пожалуйста, помогите.

Вы можете попробовать следующий способ:

MEDIA_ROOT=os.path.join(BASE_DIR,'media') #Just add like this

Делайте передачу непосредственно в поле вместо создания функции uploat_to.

images=models.ImageField(upload_to="images/",null=True)

Выполните вышеуказанные действия и посмотрите, решит ли это проблему.

Не отвечайте, если вопрос не решен.

From Python Doc. os.path.dirname(...)

Возвращает имя каталога пути pathname. Это первый элемент пары, возвращаемой при передаче path в функцию split().

os.path.join() принимает первый аргумент как полный путь, из-за этого ваш MEDIA_ROOT дает неверный путь.
Если вы используете Django=>3.0 версию, то у вас pathlib тогда вы можете легко сделать вот так

MEDIA_ROOT = BASE_DIR / 'media'

MEDIA_URL = '/media/'
Вернуться на верх