꿈 많은 사람의 이야기
파이썬 Django REST API 개발하기 - 4편. REST API CREATE 본문
지난 포스팅까지 django rest api framework를 활용해서 rest api를 연동하고, update, delete, list view를 진행했었습니다.
이번 포스팅이 django rest api 시리즈 마지막편 4편입니다.
마지막은 이제 CRUD에서 하지 않았던 Create 부분을 하겠습니다.
역시 먼저 serializers.py를 설정해줘야겠죠!
serializers.ModelSerializer를 상속해줘서 create serializer를 만들어줍니다.
이제 views.py로 넘어갑니다.
views.py에서는 당연히 방금 만든 serializer를 import 해야겠죠?
그리고 rest_framework.generic에 있는 CreateAPIView를 import해줍니다.
이게 바로 create view입니다!
그리고 create를 담당하는 class를 하나 만들죠. 당연히 상속을 CreateAPIView를 해야겠구요
serializer_class를 아까 만든 CreateSerializer로 설정해줍니다.
다음은 urls.py입니다!
view.py에 class를 생성해놨으니 당연히 url과 연동을 해줘야겠죠? 방금 만든 class를 연동시켜줍니다.
그러면 이제 rest api에서의 create 부분은 끝!
실제로 봐봅시다
create를 담당하는 url 영역에 왔습니다.
POST 버튼이 하나 있네요? 이전 포스트에서 말씀드렸지만 CREATE는 POST, UPDATE는 PUT이라고 말씀드렸습니다.
이제 여기에 값을 입력을 해줍니다.
title, content에 해당하는 값을 입력해서 POST를 하면!
실제 DB에 들어간 것을 볼 수 있습니다.
그러면 Python 자체에서 REST API와 통신하려면 어떻게 할까요?
requests를 사용하면 되겠죠?
import requests를 하신다음
d = {
"title":"값",
"content" : "값",
"is_complete" : "값"
}
이렇게 값을 넣어주시구요.
data = requests.post()를 이용해 보내주시면됩니다.
여기서도 마찬가지로 post를 쓰는 것을 볼 수 있습니다.
실제 값이 들어간 것도 DB에서 확인할 수 있습니다.
자! 여기까지가 djangorestframework 라이브러리를 활용해서 django rest api를 만들어보았습니다.
CRUD에서 create, read, update, delete view를 전부 만들어보았습니다.
이제 이것을 응용해서 rest api 서버를 구축해보시면 될 것 같네요 ㅎㅎ
'python-django' 카테고리의 다른 글
파이썬 Django REST API 개발하기 - 4편. REST API CREATE (12) | 2019.08.03 |
---|---|
python django REST API 개발 - 3편. django rest api update, delete (2) | 2019.07.31 |
파이썬 django로 REST API 개발하자! - 2편. django와 REST API를 이용한 게시판 개발 (6) | 2019.07.28 |
파이썬 Django REST API 개발 - 1편. djangorestframework 설치 및 셋팅 (12) | 2019.07.25 |
파이썬 장고(django)로 게시판 만들기 - 11편. Ajax로 우선순위 바꾸기 (0) | 2019.06.26 |
python django로 todo 게시판 만들기!- 10편. Ajax를 활용해보자 (7) | 2019.06.25 |
-
검프 2020.03.04 16:46 신고 소중한 정보 공유 감사합니다!
덕분에 어렵게만 느껴졌던 DRF를 쉽게 만져볼 수 있었네요.
항상 좋은일만 가득하시길 바랍니다 ㅎㅎ -
이수진의 블로그 이수진의 블로그 2020.03.04 20:17 신고 안녕하세요
아닙니다. 많이 부족한 글인데 감사합니다.
좋은 일 가득하시구요! 건강 조심하세요 -
개꿀띠 2020.03.15 17:05 진쨔로 완전 도움많이 되었어요 혹시 참고해서 작성하신건가요?
저기에서 추가로 작업할것들이 있는데...
DRF영문페이지는 넘사벽이네요 -
이수진의 블로그 이수진의 블로그 2020.03.15 20:25 신고 안녕하세요. 도움이 되셨다면 다행입니다.
참고해서 했다기 보다는 제가 공부했던 것을 todo app에 적용하면서 정리했던 내용입니다 ~
ㅎㅎ 영문 페이지가 어려우시면 갓 papago를 이용해보셔요 ㅎㅎㅎㅎ -
장린이 2020.11.25 19:02 안녕하세요
깃헙을 봐보니 todoSubject_use_restfulAPI/todoSubject/settings.py에 데이터베이스 부분이 주석 처리돼있더라고요
그래서 저도 주석처리해놨는데,
특정 작업?(migrate, createsuperuser, 장고 웹 게시글 수정 등등)을 하면 아래와 같이 오류가 발생합니다.
왜 이러는 걸까요?ㅠㅠ
(read는 정상작동)
settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
*mysqlclient 사용중 -
이수진의 블로그 이수진의 블로그 2020.11.28 20:53 신고 안녕하세요
음 제 코드를 봤는데 주석된 부분이 없어서요. 혹시 어느 부분을 말씀하시는 걸까요?? -
장린이 2020.11.30 18:55 '''
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}'''
이 부분이요 -
이수진의 블로그 이수진의 블로그 2020.12.02 19:46 신고 아 ~
저는 MySQL을 사용하려고 SQLite3 부분을 주석처리한 것입니다.
MySQL 부분은 주석처리를 하지 않았어요.
그러면 해당 에러는 MySQL migration 문제일 것으로 추측이 되네요.
일단 mysqlclinet가 아니라 pymysql을 사용해주시구요. 앞선 글에서 mysql migration 부분이 있는데 이 부분 해보시길 추천드립니다 -
장린이 2020.12.02 21:46 아 감사합니다.
그러면 DB <> API <> 웹
웹 부분에도 DB 설정이 필요한 건가요?? 어디에 쓰이는건지..
그리고 만약 지금 제 세팅을 그대로 유지하되 오류가 발생하지않게 하고싶다면..
SQlite3 부분을 주석 해제만 하면 되는 건가요? 아니면 API/settings.py DB 설정과 똑같이 해야하는 건가요?
질문 너무 많이해서 죄송합니다ㅠㅠ -
이수진의 블로그 이수진의 블로그 2020.12.04 11:37 신고 REST API를 이용하면 REST API가 DB에서 데이터를 가지고와 WEB에 쏴주는 역할을 합니다.
즉, 웹에선 DB설정이 필요없습니다.
실제로 제 코드에서 use_restfulAPI/todoSubject/setting.py보시면 mysql 설정은 없습니다.
즉, API쪽만 건드리시면됩니다 -
장린이 2020.12.04 17:35 네 그래서 저도 웹에 DB설정을 안해놨는데 에러가떠요 ㅠㅠ
웹은 createsuperuser도 못하는건가여? -
이수진의 블로그 이수진의 블로그 2020.12.07 09:57 신고 mysqlclinet가 아니라 pymysql이 맞으실까요? 위에서도 언급해드렸지만 mysqlclinet가 아닙니다.
pymysql을 사용해주시고 migration을 해주세요!