我的 djanco 配置无法下载图像,但将它们存储在数据库中而没有发生任何错误

问题描述 投票:0回答:1

我正在处理两天以来遇到的问题,我试图将汽车网站的图像存储在我的汽车数据库以外的数据库中,创建成功,它出现在数据库中,但是当我尝试将相同的图像存储在我的应用程序的文件夹中,无论我尝试什么,它都不起作用,这是我的模型:

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”文件夹完全控制权和其他不起作用的东西

python django django-models django-views
1个回答
0
投票

您似乎遇到了一个问题:尽管已成功保存在数据库中,但通过 Django 应用程序上传的图像并未存储在指定文件夹 (

car_images/
) 中。您可以检查以下几项来解决问题:

  1. 检查文件权限:确保

    MEDIA_ROOT
    (
    os.path.join(BASE_DIR, "media")
    ) 指定的目录具有允许 Django 应用程序向其写入文件的适当权限。确保运行 Django 应用程序服务器的用户可写入该目录(例如,
    chmod 755 media
    )。

  2. 验证图像上传:确认 Django 视图正确接收图像。您可以通过在

    images
    视图中打印
    manage_cars
    来查看是否从请求中正确检索图像来执行此操作。

  3. 检查上传路径:验证您的

    upload_to
    模型中的
    CarImage
    参数是否配置正确。
    upload_to
    参数指定
    MEDIA_ROOT
    中应存储上传文件的目录。在你的情况下,它应该是
    upload_to='car_images/'

  4. 正确处理文件上传:确保您在 Django 视图中正确处理文件上传。您正在使用

    request.FILES.getlist('image')
    检索上传的图像,这似乎是正确的。但是,请确保在 HTML 表单中将表单 enctype 设置为
    multipart/form-data

  5. 确认图像保存过程:检查

    handle_uploaded_image
    功能(它似乎负责将图像保存到磁盘)以确保它正确地将图像保存到所需的位置(
    MEDIA_ROOT/car_images/
    )。您可能想在循环中打印出
    image_path
    以查看它是否返回预期路径。

  6. 检查错误日志:如果上述步骤不能解决问题,请检查 Django 应用程序的错误日志中是否有任何相关的错误消息或异常。这可以提供有关可能出现问题的宝贵线索。

通过系统地检查这些点,您应该能够识别并解决图像未存储在指定文件夹中的问题。如果您仍然遇到困难,请随时提供其他详细信息或错误消息以获得进一步帮助。

© www.soinside.com 2019 - 2024. All rights reserved.