简体   繁体   English

测试imageField

[英]Testing imageField

I want test my view, but I don't know how I can send image in request. 我想测试我的视图,但是我不知道如何在请求中发送图像。 I mean, I have model like this: 我的意思是,我有这样的模型:

class Item(models.Model):
    text = models.CharField(max_length=255)
    image = models.ImageField()

I have serializers: 我有序列化器:

class RecieverSerializer(UserSerializer):
    class Meta():
        fields = ('id', 'email')
        extra_kwargs = {
            'username' : {'validators':[]}
        }

class ItemSerializer(serialisers.ModelSerializer):
    reciever = RecieverSerializer(many=True)
    class Meta():
        model = Item
        fields = ('text', 'image')

View: 视图:

class ItemViewSet(viewsets.ModelViewSet):
    model = Item
    serializer_class = ItemSerializer
    queryset = []

How I can send data to server? 如何将数据发送到服务器? If i try json: 如果我尝试json:

{ 
    "text": "123456",
    "reciever":[
        {"id":1, "email":"qwe@qwe.qwe"},
        {"id":2, "email":"asd@asd.asd"}
     ],
    "image" : http://someurl.com/way/image.jpg
}

Rest framework returns: JSON parse error - No JSON object could be decoded Rest框架返回: JSON parse error - No JSON object could be decoded

Just try this, Edit ItemSerializer like this. 只需尝试一下,像这样编辑ItemSerializer

class ItemSerializer(serialisers.ModelSerializer):
    reciever = RecieverSerializer(many=True)
    image_url = serializers.SerializerMethodField(source='get_image_url')

    class Meta():
        model = Item
        fields = ('text', 'image')

    def get_image_url(self, obj):
        if obj.image:
            return self.context['request'].build_absolute_uri(obj.image.url) 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM