개미의 개열시미 프로그래밍

[django] 1. 장고 개발 환경 준비하기 (with Rest Framework) 본문

WEB/django

[django] 1. 장고 개발 환경 준비하기 (with Rest Framework)

YunHyeok 2021. 7. 2. 21:54
728x90
반응형

이번 우리 졸업 프로젝트에서 프론트(React), 백앤드(Django), 데이터베이스(MySql)를 연동하는 작업이 필요하다.

 

먼저, 가상환경을 세팅하는 것부터 시작해서 목표는 리액트를 연동하는 것까지 작성해보려 한다. (현재 장고와 mysql 연동까지는 완료)

 

가상 환경 세팅 (with Rest Framework)

터미널을 git bash로 진행하였다.

$ mkdir django_rest
$ cd django_rest
$ python -m venv venv //가상환경 생성
$ (venv) pip install django
$ (venv) django-admin startproject mysite . //장고 프로젝트 생성 (.) 주의
$ (venv) python manage.py startapp api  // 앱 생성

- 장고를 설치후 startproject로 프로젝트르 생성할 때 현재 디렉터리를 프로젝트 디렉터리로 만드는 점(.) 기호를 주의하자. 점기호를 붙인 뒤 실행하면 manage.py 가 프로젝트 안에 바로 보일 것이다.

 

[ls 결과]

 

 Rest Framework 설치

$ (venv) pip install djangorestframework

- Rest framework를 먼저 깔아주는 건 같이 프로젝트를 진행하는 팀원이 장고 버전 문제로 오류가 난적이 있어서 이기도 하다. 

- DRF(Django Rest Framework)는 Django 안에서 RESTful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리이다.

- 쿼리셋, 모델 인스턴스 등이 복잡한 데이터를 JSON, XML 등의 컨텐트 타입으로 쉽게 변환 가능한 python datatype으로 변환시켜주는 Serializer기능을 쓸 때 유용하다. (데이터베이스의 데이터를 JSON 형식으로!)

- Serializer 기능구현은 뒤에서..

 

 

[mysite/settings.py]

- 설치가 완료되었다면 'api'와 'rest_framework'를 추가한다.

 

- 추가적으로 언어와 시간도 바꿔주도록 한다. 서버를 띄었을 때 영어보단 한글이 편해서..

 

$ (venv) python manage.py makemigrations
$ (venv) python manage.py migrate

- migrate만 해주어도 되지만 습관?상 makemigrations도 한다. makemigrations는 모델이 생성되거나 변경된 경우 migrate를 해주는 명령어로 기억하면 된다.

 

$ (venv) python manage.py runserver

- 이제 서버를 띄워본다.

 

 

[결과화면]

- 주소창에 loaclhost:8000을 치고 위 이미지와 같이 나오면 성공이다.

 

 

서버 구동해보기

- 주소창에 localhost:8000/api를 입력(요청)하면 Page not found(404)가 나오고 페이지가 나오도록 하려면 mysite/urls.py 에서 /api 페이지의 URL매핑을 해주어야 한다.

 

- 먼저, api/views.py, api/urls.py, mysite/urls.py 순서대로 수정한다.

 

[api/views.py]

 

[api/urls.py]

- api/ 는 urls.py를 생성해준다. URL을 분리하는 이유는 전 포스팅에 적어놨다.

https://reliablecho-programming.tistory.com/43 

 

[django] 개발 흐름 이해하기

'점프 투 파이썬'을 공부하던 중 각 파일이 하는 역활에 대해 헷갈리기 시작했고 전체적인 개발흐름을 이해하기 위해 복습을 하면서 제대로 정리해야겠다고 생각했다. 참고자료 : 점프 투 장고

reliablecho-programming.tistory.com

 

[mysite/urls.py]

- mysite/urls.py의 ""과 api/urls.py의 "api/"가 합쳐진 "api/" 요청으로부터 view.py에 작성한 API함수가 리턴이 된다.

 

[ localhost:8000/api/ 결과 화면 ]

 

서버 구동까지 완료되었고 이어서 디비 연동하는 것을 올리려고 한다.

 

 

참고한 사이트


- https://wikidocs.net/70649 

- https://devkor.tistory.com/entry/02-Django-Rest-Framework-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85?category=734691 

728x90
반응형
Comments