티스토리 뷰
AI웹 개발자 과정 공부 (팀스파르타)/Django (장고)
24.05.01_TIL (Django 심화 : DRF, RESTful API와 JSON 기본세팅)
티아(tia) 2024. 5. 1. 21:14728x90
++ 장고 공식 문서는 항상 확인하기
https://docs.djangoproject.com/en/4.2/
1. RESTful API, JSON
📕 API (Application Programming Interface)
⇒ 쉽게 말해 어플리케이션과 프로그래밍적으로 소통하는 방법입니다.
CLI (Command Line Interface) - 명령줄로 소통하는 방법
GUI (Graphic User Interface) - 그래픽으로 유저와 소통하는 방법
API (Application Programming Interface) - 프로그래밍으로 어플리케이션과 소통하는 방법
☝ API를 이용해서 서로 소통하는 것
- 미세먼지를 보여주는 웹 어플리케이션 ↔ 기상청 서버 (기상청 API)
- 카카오 로그인이 있는 웹 어플리케이션 ↔ 카카오 서버 (Kakao API)
- 유튜브 영상을 보여주는 웹 어플리케이션 ↔ 유튜브 서버 (Youtube API)
📕 RESTful API
- 어플리케이션간 소통하는 방법에 REST적인 표현을 더한 것입니다. ⇒ REST 원리를 따라 설계한 API이에요!
- RESTful API로 작성하면 결과를 보지 않고 요청 형식만 보더라도 추론이 가능합니다.
- DELETE /articles/1/ → 1번 article 삭제
- GET /articles/1 → 1번 article 조회
- GET /articles/ → article 목록 조회
- POST /articles/ → 새로운 article 생성
- 핵심 규칙
- 자원 : URI로 표현
- 행위 : HTTP Method로 표현
- 표현
- 자원과 행위를 통해 표현되는 결과물로 일반적으로 JSON 형식을 사용
- URI는 동사가 아닌 명사의 나열로 사용
- → POST /articles/ (O)
- → POST /articles/create/ (X)
- 따르지 않더라도 로직과 동작에는 아무런 이상이 없으나, 이 규칙을 따를 때 얻는 이득이 큽니다.
- 일반적으로 GET POST PUT DELETE + PATCH를 사용합니다.
⇒ 앞으로 우리는 RESTful API를 설계하고 제공하는 서버를 만들게 될 거예요!
📕 JSON(JavaScript Object Notation)
- JS 표기법을 따른 일종의 데이터를 담는 형식입니다.
- XML, CSV, YAML 등의 형식도 있지만 JSON을 일반적으로 사용해요!
- 사람이 읽기 쉽고 프로그래밍으로 파싱(분석)하기 쉬습니다.
- 파이썬의 dict처럼 key-value 형식의 구조입니다.
- .json 형식으로 사용합니다.
- 문자는 "으로 묶여야하며 true false , 숫자 등을 사용가능합니다.
기본형식
["리스트", 1, true, "다양한 자료를 담을 수 있어요"] // list
{ key: value } // object
예시
{
"user1": {
"name": "aiden",
"age": 22,
"tags": ["python", "javascript", "django"]
},
"user2": {
...
},
...
}
2. 새로운 프로젝트 생성하기
https://tia13.tistory.com/50 - 개발환경구성하기 기초세팅
https://tia13.tistory.com/54 - git 환경구성하기(gitignore생성)
📢 직접 만들어주세요!
- api_pjt 라는 이름의 프로젝트를 생성해 주세요.
- articles 앱을 생성하고 기본적인 url 구조를 만들어주세요.
-
python manage.py startapp articles
- api_pjt 에서 settings.py 에서 app등록
- /api/v1/articles/로 들어오면 articles 앱의 urls로 연결해 주세요. - api_pjt 에서 urls.py 에 넣어준다.
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/v1/articles/', include('articles.urls')),
]
- api_pjt 에서 articles 에 urls.py 를 만들어 주고 그 안에 일단 기본 세팅을 해준다.
from django.urls import path
urlpatterns = []
- articles 앱의 models.py를 작성해 주세요.
- Artcile 모델 클래스를 작성하고 아래 필드를 포함해 주세요.
- title content created_at updated_at
- Artcile 모델 클래스를 작성하고 아래 필드를 포함해 주세요.
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=120)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
- 마이그레이션을 해주자.
python manage.py makemigrations
python manage.py migrate
3. 장고 seed 파일을 만들자.
- 데이터 생성하기 먼저 seed를 쓸 수 있게 장고파일을 깔아주자.
pip install django-seed
그 다름으로 freeze 해준다.
pip freese > reqirements.txt
- api_pjt 에서 settings.py 에서 app등록
- seeding 해보자.
python manage.py seed articles --number=30
이렇게 에러가 떠버렸다면?
ModuleNotFoundError: No module named 'psycopg2'
설치해주어야 한다.
pip install psycopg2
설치한 후 다시 seeding 을 해준다. 그러면 아래의 그림처럼 잘 설치된 것을 볼 수 있다.
- control + shift + p (맥은 command)를 눌러서 ‘SQLite: Open Database’ 선택
- 내가 열고 싶은 데이터베이스 파일을 선택 - db.sqlite3/~ 파일이름 되어있는 것 선택
- 파일명들 아래에 보면 sqlite Explorer 이 생기면서 데이터베이스가 들어갈 수 있는 곳이 생긴다. 확인하면 데이터가 잘 생성된 것을 볼 수 있다.
반응형
'AI웹 개발자 과정 공부 (팀스파르타) > Django (장고)' 카테고리의 다른 글
24.05.01_TIL (Django 심화 : Json Response) (0) | 2024.05.30 |
---|---|
24.05.02_TIL (Django 심화 : REST Framework 시작하기) (0) | 2024.05.02 |
24.04.30_TIL (Django Custom UserModel 활용하기 ) (0) | 2024.05.01 |
24.04.26_TIL (Django Model Relationship (1:N) 댓글 구현 ) (0) | 2024.04.26 |
24.04.25_TIL (2) (Django static & media, 관리자페이지) (0) | 2024.04.25 |