코딩공부/Python Django

KKU likelion rest project (4)

integerJI 2019. 10. 28. 01:59

album과 files를 추가해 주었다면 정상적으로 작동하는지 확인하자

 

이미지를 올려보면 정상적으로 추가되는 모습을 볼 수 있다. author은 아직 views함수를 추가하지 않아서 괜찮다.

 

files를 올려보자

 

잘 올라간다.

 

하지만 files같은 경우에는 새로운 설정이 필요하다

 

img는 사진의 파일만 올리면 되지만 files는 모든 파일이 들어오기 때문에

 

이에 따른 설정이 필요하다

 

mystorage/views.py를 설정하자

 

from rest_framework import viewsets

from .models import Essay, Album, Files

from .serializers import EssaySerializer, AlbumSerializer, FilesSerializer

from rest_framework.filters import SearchFilter

from rest_framework.parsers import MultiPartParser, FormParser

 

class PostViewSet(viewsets.ModelViewSet):

 

    queryset = Essay.objects.all()

    serializer_class = EssaySerializer

 

    filter_backends = [SearchFilter]

    search_fields = ('title''body')

 

    def perform_create(selfserializer):

        serializer.save(author=self.request.user)

 

    def get_queryset(self):

        qs = super().get_queryset()

 

        if self.request.user.is_authenticated:

            qs = qs.filter(author = self.request.user)

        else:

            qs = qs.none()

        return qs

 

class ImgViewSet(viewsets.ModelViewSet):

    

    queryset = Album.objects.all()

    serializer_class = AlbumSerializer

 

class FileViewSet(viewsets.ModelViewSet):

    

    queryset = Files.objects.all()

    serializer_class = FilesSerializer

 

    parser_classes = (MultiPartParser, FormParser)

이렇게 추가해줌으로써 여러 가지의 파일을 안전하게 받을 수 있다.

 

이제 mystorage/views.py에서 FileViewSet class에 유효성 검사를 추가하여 주자

 

from rest_framework import viewsets

from .models import Essay, Album, Files

from .serializers import EssaySerializer, AlbumSerializer, FilesSerializer

from rest_framework.filters import SearchFilter

from rest_framework.parsers import MultiPartParser, FormParser

 

class PostViewSet(viewsets.ModelViewSet):

 

    queryset = Essay.objects.all()

    serializer_class = EssaySerializer

 

    filter_backends = [SearchFilter]

    search_fields = ('title''body')

 

    def perform_create(selfserializer):

        serializer.save(author=self.request.user)

 

    def get_queryset(self):

        qs = super().get_queryset()

 

        if self.request.user.is_authenticated:

            qs = qs.filter(author = self.request.user)

        else:

            qs = qs.none()

        return qs

 

class ImgViewSet(viewsets.ModelViewSet):

    

    queryset = Album.objects.all()

    serializer_class = AlbumSerializer

 

from rest_framework.response import Response

from rest_framework import status

 

class FileViewSet(viewsets.ModelViewSet):

    

    queryset = Files.objects.all()

    serializer_class = FilesSerializer

 

    parser_classes = (MultiPartParser, FormParser)

 

    def post(selfrequest*args**kwargs):

        serializer = FilesSerializer(data=request.data)

        if serializer.is_valid():

            serializer.save()

            return Response(serializer.data, status=HTTP_201_CREATED)

        else:

            return Response(serializer.error, status=HTTP_400_BAD_REQUEST)

 

이렇게 files까지 안전하게 올리는 것으로 끝

'코딩공부 > Python Django' 카테고리의 다른 글

KKU likelion django project (2)  (0) 2020.01.02
KKU likelion django project (1)  (0) 2020.01.02
KKU likelion rest project (3)  (1) 2019.10.28
KKU likelion rest project (2)  (0) 2019.10.27
KKU likelion rest project (1)  (0) 2019.10.27