404 страница не найдена в django localhost при попытке щелкнуть по url изображения
Я создал объекты меню из стандартной админ-панели Django, в котором одним из полей является изображение. Я также успешно загрузил изображение. Но в ответе api, если я нажимаю на url изображения, он говорит 404 не найдено.
Ответ api выглядит следующим образом.
И image_url, и изображение не найдены 404.
Я добавил 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(blank=True,null=True)
rating = models.FloatField(blank=True, null=True)
description = RichTextField(blank=True, null=True)
price = models.FloatField(blank=True, null=True)
My serializers:
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']
Мои настройки:
# BASE_DIR = Path(__file__).resolve().parent.parent
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')
# MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR),"media")
MEDIA_URL = '/media/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
django_heroku.settings(locals())
Мой проект urls:py
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Я перепробовал много всего, вставляя только urlpatterns для media. Также я закомментировал media_root и определил по-новому, изменил имя базы данных и т.д. Но, похоже, ничего не работает. Это потому, что я установил heroku на этот проект? Но локальный должен показывать изображения