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(self, serializer): 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(self, serializer): 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(self, request, *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 |