Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ProductCreateSerializer(serializers.ModelSerializer):
- class Meta:
- model = Product
- fields = [
- "id",
- "product_name",
- "product_description",
- "product_price",
- ]
- def create(self,validated_data):
- return Product.objects.create(**validated_data)
- from rest_framework import generics,status
- from rest_framework.parsers import FormParser,MultiPartParser
- class ProductCreateAPIView(generics.CreateAPIView):
- queryset = Product.objects.all()
- serializer_class = ProductCreateSerializer
- permission_classes = [IsAdminOrIsSelf,]
- parser_classes = (MultiPartParser,FormParser,)
- def perform_create(self,serializer,format=None):
- owner = self.request.user
- if self.request.data.get('image') is not None:
- product_image = self.request.data.get('image')
- serializer.save(owner=owner,product_image=product_image)
- else:
- serializer.save(owner=owner)
- def test_product_creation_with_image(self):
- url = reverse('products_create_api')
- self.client.login(username='testaccount',password='testaccount')
- data = {
- "product_name" : "Potatoes",
- "product_description" : "Amazing Potatoes",
- "image" : open("local-filename.jpg","rb")
- }
- response = self.client.post(url,data)
- self.assertEqual(response.status_code,status.HTTP_201_CREATED)
- 'DEFAULT_PARSER_CLASSES': (
- 'rest_framework.parsers.JSONParser',
- 'rest_framework.parsers.MultiPartParser',
- 'rest_framework.parsers.FileUploadParser',
- ),
- file = serializers.FileField()
- parser_classes = (FileUploadParser, JSONParser)
- # views.py
- class FileUploadView(views.APIView):
- parser_classes = (MultiPartParser,)
- def put(self, request, filename, format=None):
- file_obj = request.data['file'][0]
- ftype = request.data['ftype'][0]
- caption = request.data['caption'][0]
- # ...
- # do some stuff with uploaded file
- # ...
- return Response(status=204)
- file.upload = Upload.upload({
- url: "/api/picture/upload/" + file.name,
- data: {
- file: file,
- ftype: 'final',
- caption: 'This is an image caption'
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement