Моя конфигурация djanco не загружает изображения, но сохраняет их в базе данных без каких-либо ошибок
У меня проблема уже 2 дня, я пытаюсь сохранить изображение для автомобильного сайта в базе данных, отличной от моей автомобильной, создание проходит успешно, оно появляется в базе данных, но когда я пытаюсь сохранить это же изображение в папке моего приложения, что бы я ни пробовал, оно просто не работает, вот мои модели :
class Cars(models.Model):
marque = models.CharField(max_length=60)
modele = models.CharField(max_length=60)
motorisation = models.CharField(max_length=60)
couleur = models.CharField(max_length=60)
carburant = models.CharField(max_length=60)
annee_modele = models.IntegerField()
kilometrage = models.IntegerField()
nbr_porte = models.IntegerField()
nbr_place = models.IntegerField()
puiss_fiscale = models.IntegerField() #En chevaux fiscaux
puiss_din = models.IntegerField() #En chevaux DIN
a_vendre = models.BooleanField(default=True)
class CarImage(models.Model):
car = models.ForeignKey(Cars, related_name="images", on_delete=models.CASCADE)
image = models.ImageField(upload_to='car_images/')models.py
Post view :
class manage_cars(View):
parser_classes = (MultiPartParser, FormParser)
def post(self, request, *args, **kwargs):
c_serializer = car_serializer(data=request.POST)
if c_serializer.is_valid():
car_instance = c_serializer.save()
images = request.FILES.getlist('image')
print(images)
for image in images:
image_path = handle_uploaded_image(car_instance, image)
# Créer l'objet CarImage avec le chemin de l'image
CarImage.objects.create(car=car_instance, image=image_path)
return JsonResponse({"message": "Voiture et images sauvegardées avec succès"}, status=201)
else:
return JsonResponse(car_serializer.errors, status=400)
serializers.py
from rest_framework import serializers
from .models import *
class car_serializer(serializers.ModelSerializer):
class Meta:
model = Cars
fields = "__all__"serializers.py
settings.py :
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
Я просто французский новичок в разработке back-end, возможно, это какая-то глупая вещь, которая вызывает ошибку, но я так устал от этого...
я пытался дать папкам "media" и "car_images" права полного контроля и другие вещи, которые не сработали
Похоже, вы столкнулись с проблемой, когда изображения, загруженные через ваше приложение Django, не сохраняются в указанной папке (car_images/
), несмотря на то, что они успешно сохранены в базе данных. Вот несколько вещей, которые вы можете проверить для устранения проблемы:
Проверка разрешений на файлы: Убедитесь, что каталог, указанный
MEDIA_ROOT
(os.path.join(BASE_DIR, "media")
), имеет соответствующие разрешения, позволяющие приложению Django записывать в него файлы. Убедитесь, что каталог доступен для записи пользователю, запускающему сервер приложений Django (например,chmod 755 media
).Проверка загрузки изображений: Убедитесь, что изображения корректно принимаются вашим представлением Django. Вы можете сделать это, напечатав
images
в вашемmanage_cars
представлении, чтобы увидеть, правильно ли получены изображения из запроса.Проверьте путь загрузки: Убедитесь, что параметр
upload_to
в вашей моделиCarImage
правильно настроен. Параметрupload_to
задает каталог внутриMEDIA_ROOT
, в котором должны храниться загружаемые файлы. В вашем случае это должно бытьupload_to='car_images/'
.Правильно обрабатывайте загрузку файлов: Убедитесь, что вы правильно обрабатываете загрузку файлов в вашем представлении Django. Вы используете
request.FILES.getlist('image')
для получения загруженных изображений, что кажется правильным. Однако убедитесь, что enctype формы установлен наmultipart/form-data
в вашей HTML-форме.Подтвердите процесс сохранения изображений: Проверьте функцию
чтобыhandle_uploaded_image
(которая, по-видимому, отвечает за сохранение изображения на диск), чтобы убедиться, что она правильно сохраняет изображения в нужное место (MEDIA_ROOT/car_images/
). Возможно, вы захотите вывестиimage_path
в цикле, проверить, - что
он
Систематически проверяя эти пункты, вы сможете выявить и решить проблему, связанную с тем, что изображения не сохраняются в указанной папке. Если вы продолжаете испытывать трудности, не стесняйтесь предоставить дополнительные сведения или сообщения об ошибках для получения дальнейшей помощи.