Ошибка страницы 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/'