У меня есть простой API для получения, созданный с использованием Django Rest Framework. Он получает все продукты питания из модели, Меню. Он состоит из поля изображения. Ответ API успешен, и я получаю URL-адрес изображения в поле изображения, но когда я нажимаю на этот URL-адрес, изображение не отображается на новой вкладке. Я сделал несколько проектов и, насколько я помню, он должен отображать изображение на новой вкладке. Из-за этого изображение не отображается во внешнем интерфейсе, что делается в Reactjs. Бэкенд пока обслуживается в Heroku.
URL выглядит следующим образом:
https://example.herokuapp.com/api/menus
Ответ API на локальном языке выглядит следующим образом:
И когда я нажимаю на изображение и на image_url, отображается следующее:
Я добавил image_url, чтобы посмотреть, работает ли он, но он тоже не сработал.
Моя модель:
class Menus(models.Model):
category = models.CharField(max_length=50,choices=CATEGORY,default='main courses')
food_name = models.CharField(max_length=100,blank=True, null=True)
image = models.ImageField(upload_to='media/pictures',null=True)
rating = models.FloatField(blank=True, null=True)
description = RichTextField(blank=True, null=True)
price = models.FloatField(blank=True, null=True)
Мои сериализаторы:
class MenusSerializer(serializers.ModelSerializer):
image_url = serializers.SerializerMethodField('get_image_url')
def get_image_url(self, obj):
request = self.context.get('request')
image_url = obj.image.url
return request.build_absolute_uri(image_url)
class Meta:
model = Menus
fields = ['category','image', 'image_url','food_name',
'description','price','rating']
Мои настройки:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
django_heroku.settings(locals())
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media/pictures')
URL моего проекта:
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Примечание. Не работает как локально, так и в live API (на героку).
Обновление:
Папки выглядят следующим образом:
Вы проверили каталог изображения вручную. Я думаю, это не должно быть
media/media/pictures
, но должно бытьmedia/pictures
хорошо, каким тогда должен быть мой media_url? пустой?? @ShivendraPratapKushwaha
нет... пожалуйста, проверьте вручную, куда загружено ваше изображение. также проверьте
settings.DEBUG
.мой deub= true в settings.py....ваш код ниже тоже не работает.....
Вы проверили, где хранится ваш файл...??