티스토리 뷰
Creating the URLS and Testing the images serializers
DB에 있는 모든 이미지들을 시리얼라이즈 하려면, 이를 내가 이 오브젝트를 위해 생성한 시리얼라이저로 시리얼라이즈 해야한다.
만약 내가 이를 다른 댓글 시리얼라이저로 시리얼라이즈 하면, 에러가 발생한다.
왜냐하면 다른 오브젝트를 위해 생성된 시리얼라이저이기 때문이다.
URL
Regular expression
위 정규식의 의미는 redirect라고 작성된 텍스트만 매칭한다.
장고 url시스템의 작동 원리
1. url입력 창에 images/ 라고 입력한다.
2. 장고는 이를 regular expression과 비교한다.
3. 매칭되는지를 검토한다.
4. 매칭되지 않는다면, 그 다음으로 이동 => 또 검토
5. 매칭된다면, 성공 (성공한다면, 그 아래는 더 이상 url 매칭을 시도하지 않는다. 이미 성공했으니까)
이렇게 url과 regular expression이 매칭되면, view를 실행할 것이다.
images -> urls.py
images -> views.py
from rest_framework.views import APIViewfrom rest_framework.response import Responsefrom . import models, serializers
class ListAllImages(APIView):
def get(self, request, format=None):
all_images=models.Image.objects.all() serializer = serializers.ImageSerializer(all_images, many=True) return Response(data=serializer.data)
class ListAllComments(APIView):
def get(self, request, format=None):
all_comments=models.Comment.objects.all() serializer = serializers.CommentSerializer(all_comments, many=True)
return Response(data=serializer.data)
class ListAllLikes(APIView):
def get(self, request, format=None):
all_likes = models.Like.objects.all() serializer = serializers.LikeSerializer(all_likes, many=True)
return Response(data=serializer.data)
먼저 urls.py파일을 봐 보자. urlpatterns 안에 path함수가 존재하는데 장고 1.x에서는 url을 사용하고, 2.x에서는 path를 사용한다. 첫 번째 path와 같이 "all/"이라고 첫 인자에 넣어주면 all과 매칭될 경우 views파일에 ListAllImages로 찾아가 view를 실행시킨다.
그리고 여기서 추가작업을 해 줘야 하는데, config밑에 urls.py에 images.urls을 찾을 수 있도록 경로를 추가해 줘야 한다.
config -> urls.py
이제 위 코드를 저장한 후 어드민 패널을 새로고침해 보자.
위와 같은 화면이 나오려면 http://127.0.0.1:8000/images/likes/ 로 들어가면 된다.
GET을 눌러보면 장고에서는 css를 하지 않았어도 우리의 api를 브라우징 할 수 있는 것을 알 수 있다.
method도 바꿀 수 있다. 하지만 veiws.py에 get함수만 추가해 뒀기 때문에 get만 가능하다.
그리고 위 화면을 보면 DB에 있는 이미지를 json 자바스크립트 오브젝트로 변환 시키고있다.
그리고 추가적인 노력없이 브라우징 가능한 api도 얻었다. 덕분에 실제로 어떻게 보이는 지 살펴볼 수 있다. ios, android가 얻게 될 json이 어떻게 보이는지도 확인할 수 있다.
'WEB > Django' 카테고리의 다른 글
로그인/로그아웃/회원가입 기능 구현 (0) | 2019.01.07 |
---|---|
JWT(Json Web Token) (0) | 2019.01.07 |
The Request Object in Django (0) | 2018.12.25 |
Hidden Model Fields in Django (0) | 2018.12.24 |
Customizing the Django Admin (0) | 2018.12.23 |