Как получить изображение через URL, созданный imageField? - PullRequest
0 голосов
/ 09 марта 2020

Я учусь Django прямо сейчас, и у меня есть некоторые проблемы с загрузкой изображений. Я пытаюсь сделать альбом, имеющий отношение hasMany к изображениям, и вот что я получаю:

class Galery(models.Model):
    title = models.CharField(max_length=128)

    def __str__(self):
        return self.title


def nameFile(self, filename):
    return '/'.join(['images', filename])


class Image(models.Model):
    name = models.CharField(
        max_length=80,
    )
    path = models.ImageField(
        upload_to=nameFile,
        max_length=254,
        null=False,
        width_field='width',
        height_field='height'
    )
    height = models.PositiveIntegerField(
        blank=True,
        null=True
    )
    width = models.PositiveIntegerField(
        blank=True,
        null=True
    )
    galery = models.ForeignKey(Galery, related_name='images', on_delete=models.CASCADE)

    def __str__(self):
        return self.name

А вот файл сериализатора:

class ImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = Image
        fields = ('path', 'width', 'height', 'name')


class GalerySerializer(serializers.ModelSerializer):
    images = ImageSerializer(many=True)

    class Meta:
        model = Galery
        fields = ('title', 'images')
        extra_kwargs = {'images': {'required': True}}

    def create(self, validated_data):
        galery = Galery.objects.create(**validated_data)
        return galery

в моем методе get, который я получаю следующий результат:

    "data": [
        {
            "title": "album",
            "images": [
                {
                    "path": "http://127.0.0.1:8000/media/images/payment_options_YhnHBHl.png",
                    "width": 164,
                    "height": 24,
                    "name": ""
                },
                {
                    "path": "http://127.0.0.1:8000/media/images/insta_M99cAoz.png",
                    "width": 120,
                    "height": 120,
                    "name": ""
                },
                {
                    "path": "http://127.0.0.1:8000/media/images/icon-checked_f9ANBAy.svg",
                    "width": null,
                    "height": null,
                    "name": ""
                },
                {
                    "path": "http://127.0.0.1:8000/media/images/home-email_lPoQgNm.png",
                    "width": 40,
                    "height": 44,
                    "name": ""
                }
            ]
        }
    ],
    "meta": {
        "nextPage": null,
        "previousPage": null,
        "total": 1,
        "page": 1,
        "perPage": 10
    }

, но когда я пытаюсь получить доступ к ссылке на изображение, я не вижу изображение (404). И я хочу знать, нужно ли при удалении этого альбома go проходить через каждый путь к изображению и удалять или что-то лучше или проще?

...