일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 백트랙킹
- 백준 #알고리즘 #파이썬 #코딩테스트
- dp
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 자바 #java
- 알고리즘
- 프로그래머스
- 백준 #파이썬 #알고리즘 #코딩테스트
- 파이썬
- css #웹 #생활코딩
- 다이나믹프로그래밍
- java #자바 #생활코딩
- PYTHON
- 파이썬 #백준 #알고리즘 #코딩테스트
- BFS
- css #생활코딩 #웹
- 코딩테스트
- java #자바
- java #자바 #나동빈
- 재귀
- Dijkstra
- 다익스트라
- react #리액트 #동빈나
- 백준
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- java #자바 #동빈나
- DFS
- 투포인터
- react #리액트 #동빈나 #나동빈 #유튜브강의
Archives
- Today
- Total
커리까지
[Django REST framework] 1-1. View와 Serializer 연결하기 본문
728x90
SMALL
Veiw 설정
함수 기반으로 작성
이번에는 REST framework 대신 일반적인 django view를 사용해서 구현
restapi > appapi > views.py
- 먼저 필요한 패키지를 선언한다.
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from .models import Snippet
from .serializers import SnippetSerializer
- snippet를 조회하는 def를 생성한다.
@csrf_exempt
def snippet_list(request):
if request.method == 'GET':
snippets = Snippet.objects.all()
serializer = SnippetSerializer(snippets, many=True)
return JsonResponse(serializer.data, safe=False)
if request.method == 'POST':
data = JSONParser().parse(request)
serializer = SnippetSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.data, status=400)
- 각각의 snippet를 수정하거나 업데이트 하는 def도 생성한다.
@csrf_exempt
def snippet_detail(request, pk):
try:
snippet = Snippet.objects.get(pk=pk)
except Snippet.DoesNotExist:
return HttpResponse(status=404)
if request.method == 'GET':
serializer = SnippetSerializer(snippet)
return JsonResponse(serializer.data)
elif request.method == 'PUT':
data = JSONParser().parse(request)
serializer = SnippetSerializer(snippet, data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data)
return JsonResponse(serializer.data, status=400)
elif request.method == 'DELETE':
snippet.delete()
return HttpResponse(status=204)
응답번호 | 내용 |
---|---|
200 | 성공 - 서버가 요청을 제대로 처리 |
201 | 작성됨 - 성공적으로 요청되었으며 서버가 새 리소를 작성 |
204 | 콘텐츠 없음 - 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음 |
400 | 잘못된 요청 - 서버가 요청의 구문을 인식하지 못함 |
404 | 찾을 수 없음 - 서버가 요청한 페이지를 찾을 수 없음 |
url 설정
restapi > appapi > urls.py
from django.urls import path, include
from .views import *
urlpatterns = [
path('snippets/', snippet_list),
path('snippets/<int:pk>/', snippet_detail),
]
api 테스트
GET
- 요청
- 응답 결과
[
{
"id": 1,
"title": "",
"code": "foo = \"bar\"\n",
"linenos": false,
"language": "python",
"style": "friendly"
},
{
"id": 2,
"title": "",
"code": "print(\"hello, world\")\n",
"linenos": false,
"language": "python",
"style": "friendly"
},
{
"id": 3,
"title": "",
"code": "foo = \"bar\"\n",
"linenos": false,
"language": "python",
"style": "friendly"
},
{
"id": 4,
"title": "",
"code": "print(\"hello, world\")\n",
"linenos": false,
"language": "python",
"style": "friendly"
}
]
POST
- 요청
body
{
"code":"print('post test')\n"
}
- 응답결과
{
"id": 5,
"title": "",
"code": "print('post test')",
"linenos": false,
"language": "python",
"style": "friendly"
}
put
- 요청
body
{
"title": "put_update",
"code" : "print('put_update')\n"
}
- 응답 결과
{
"id": 5,
"title": "put_update",
"code": "print('put_update')",
"linenos": false,
"language": "python",
"style": "friendly"
}
delete
- 요청
- 응답결과
204 no content
728x90
LIST
'django' 카테고리의 다른 글
[Django REST framework] 3. Class-based Views (0) | 2022.02.28 |
---|---|
[Django REST framework] 2. Response objects (0) | 2022.02.27 |
[Django REST framework] 1. Serialization 시작 (0) | 2022.02.25 |
[django, 장고] 장고 form checkbox 값 여러개 받기 (0) | 2021.07.10 |
[django] DB에서 테이블 삭제 후 남은 용량 삭제 (0) | 2021.03.25 |
Comments