티스토리 뷰

728x90

 

 

++ 장고 공식 문서는 항상 확인하기 

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 
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 이 생기면서 데이터베이스가 들어갈 수 있는 곳이 생긴다. 확인하면 데이터가 잘 생성된 것을 볼 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형
TAG
more
최근에 올라온 글