我正在处理两天以来遇到的问题,我试图将汽车网站的图像存储在我的汽车数据库以外的数据库中,创建成功,它出现在数据库中,但是当我尝试将相同的图像存储在我的应用程序的文件夹中,无论我尝试什么,它都不起作用,这是我的模型:
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")
我只是后端开发的法国新手,可能是一些愚蠢的东西导致了错误,但我对此感到厌倦......
我试图给予我的“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')
检索上传的图像,这似乎是正确的。但是,请确保在 HTML 表单中将表单 enctype 设置为 multipart/form-data
。
确认图像保存过程:检查
handle_uploaded_image
功能(它似乎负责将图像保存到磁盘)以确保它正确地将图像保存到所需的位置(MEDIA_ROOT/car_images/
)。您可能想在循环中打印出 image_path
以查看它是否返回预期路径。
检查错误日志:如果上述步骤不能解决问题,请检查 Django 应用程序的错误日志中是否有任何相关的错误消息或异常。这可以提供有关可能出现问题的宝贵线索。
通过系统地检查这些点,您应该能够识别并解决图像未存储在指定文件夹中的问题。如果您仍然遇到困难,请随时提供其他详细信息或错误消息以获得进一步帮助。