相关疑难解决方法(0)

Django Rest框架文件上传

我正在使用Django Rest Framework和AngularJs上传文件.我的视图文件如下所示:

class ProductList(APIView):
    authentication_classes = (authentication.TokenAuthentication,)
    def get(self,request):
        if request.user.is_authenticated(): 
            userCompanyId = request.user.get_profile().companyId
            products = Product.objects.filter(company = userCompanyId)
            serializer = ProductSerializer(products,many=True)
            return Response(serializer.data)

    def post(self,request):
        serializer = ProductSerializer(data=request.DATA, files=request.FILES)
        if serializer.is_valid():
            serializer.save()
            return Response(data=request.DATA)
Run Code Online (Sandbox Code Playgroud)

由于post方法的最后一行应该返回所有数据,我有几个问题:

  • 如何检查是否有任何内容request.FILES
  • 如何序列化文件字段?
  • 我该如何使用解析器?

python django angularjs django-rest-framework

76
推荐指数
9
解决办法
9万
查看次数

Django REST:上传和序列化多个图像

我有2个模型Task,TaskImage它们是属于Task对象的图像集合.

我想要的是能够向我的Task对象添加多个图像,但我只能使用2个模型.目前,当我添加图片时,它不允许我上传它们并保存新对象.

settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

serializers.py

class TaskImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = TaskImage
        fields = ('image',)


class TaskSerializer(serializers.HyperlinkedModelSerializer):
    user = serializers.ReadOnlyField(source='user.username')
    images = TaskImageSerializer(source='image_set', many=True, read_only=True)

    class Meta:
        model = Task
        fields = '__all__'

    def create(self, validated_data):
        images_data = validated_data.pop('images')
        task = Task.objects.create(**validated_data)
        for image_data in images_data:
            TaskImage.objects.create(task=task, **image_data)
        return task
Run Code Online (Sandbox Code Playgroud)

models.py

class Task(models.Model):
    title = models.CharField(max_length=100, blank=False)
    user = models.ForeignKey(User)

    def save(self, *args, **kwargs):
        super(Task, self).save(*args, …
Run Code Online (Sandbox Code Playgroud)

python django serialization django-rest-framework

9
推荐指数
1
解决办法
4122
查看次数

CREATE 上的 DRF 中的多部分图像上传

我想要一个模型,您可以在创建(发布)时上传多个图像。

在帖子表单中 api/animals/ 上的 DRF Web 视图中,我想添加多个图像并创建带有附加图像的新动物。

假设我有以下模型:

class Animal(models.Model):
    slug = models.CharField(max_length=20, unique=True)


class AnimalImage(models.Model):
    animal = models.ForeignKey(Animal, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='animal_pics/')
Run Code Online (Sandbox Code Playgroud)

我有以下序列化器:

class AnimalImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = AnimalImage
        fields = ('animal', 'image', )


class AnimalSerializer(serializers.HyperlinkedModelSerializer):
     images = AnimalImageSerializer(many=True)
     class Meta:
         model = Animal
         lookup_field = 'slug'
         extra_kwargs = {
             {'url': {'lookup_field': 'slug'}
         }
         fields = ('slug', 'images', )
Run Code Online (Sandbox Code Playgroud)

我还有以下几点看法:

 class AnimalViewSet(viewsets.ModelViewSet):
     queryset = Animal.objects.all()
     serializer_class = AnimalSerializer
     lookup_filed = 'slug'
     parser_classes = (JSONParser, MultiPartParser, FormParser)
Run Code Online (Sandbox Code Playgroud)

当我使用 drf …

django multipartform-data image-uploading django-forms django-rest-framework

1
推荐指数
1
解决办法
1772
查看次数