Django не обслуживает мой актив изображения, используя фреймворк rest
Я загружаю файл изображения из Flutter в Django, изображение правильно сохраняется в директории backends в assets/images, и когда я запрашиваю базу данных с помощью get, я получаю правильный путь к файлу. Но когда я перехожу по URL в браузере, изображение не появляется и я получаю ошибку. Я использую rest-framework для своего приложения.
Модель:
class Product(models.Model):
supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
name = models.CharField(max_length=200)
quantity = models.IntegerField(default=0)
barcode = models.CharField(max_length=200)
cost_price = models.FloatField(default=0)
selling_price = models.FloatField(default=0.0)
image = models.ImageField(upload_to='images/', null=True)
Settings.py:
MEDIA_ROOT = os.path.join(BASE_DIR, 'assets')
MEDIA_URL = '/pm/assets/'
Urls.py:
urlpatterns = [
path('', include(router.urls)),
]
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Serializer:
class SuppliersSerializer(serializers.ModelSerializer):
product_set = ProductsSerializer(read_only=True, many=True)
class Meta:
model = Supplier
fields = ['pk','user','name','email','phone','product_set']
class ProductsSerializer(serializers.ModelSerializer):
transactions_set = TransactionsSerializer(read_only=True, many=True)
class Meta:
model = Product
fields = ['pk','name','quantity','barcode','cost_price','image', 'selling_price', 'transactions_set']
JSON ответ:
{
"pk": 13,
"name": "pi3",
"quantity": 3,
"barcode": "11111",
"cost_price": 10.0,
"image": "/pm/assets/images/533a6ac0-f682-4814-9237-89df8e02fda715039130977982609.jpg",
"selling_price": 20.0,
"transactions_set": []
},
But when visiting: http://localhost:8000/pm/assets/images/533a6ac0-f682-4814-9237-89df8e02fda715039130977982609.jpg
Я получаю эту ошибку:
Решением было то, что он пытался использовать URL /pm/pm/assets/images, я изменил в своем settings.py:
MEDIA_ROOT = os.path.join(BASE_DIR, 'assets')
MEDIA_URL = '/assets/'
Теперь изображение успешно обслуживается django