[데이터 엔지니어링 데브코스] TIL 11일차 - 장고 활용한 API서버 만들기(1)

박단이·2023년 10월 30일
0

데브코스 TIL

목록 보기
10/56

오늘 공부한 내용🤓

  1. Django 세팅
    • django의 프로젝트는 웹 사이트 하나를 말하고, 앱은 웹 페이지 하나를 말한다.
    • 각 프로젝트와 앱에 대해 폴더가 하나씩 만들어지고 서로 관리하기 위해 import와 export를 자유롭게 이용한다.
# 장고 프로젝트 생성하기
$ django-admin startproject [project-name]

# 프로젝트 폴더로 위치 변경한 후 프로젝트를 서버에서 구동
$ cd [project-name]
$ python manage.py runserver

# 앱 생성하기
$ python manage.py startapp [app-name]
  1. django Model 생성
    • django에서 Model은 db를 table별로 읽어서 하나의 table에 있는 값을 코드에서 읽을 수 있도록 하는 것이다.
    • 다른 언어에서는 ORM(Object Relational Mapping)이라고 한다.
    1. 모델 생성
      적용하고 싶은 페이지의 폴더에 가서 model.py 파일에 모델을 만든다.
      model의 다양한 Field는 공식 홈페이지에서 확인하자. 여기서 Field는 DB의 열을 뜻한다.

      from django.db import models
      
      class Question(models.Model):
      	question_text = models.CharField(max_length=200)
      	pub_date = models.DateTimeField('date published')
    2. Migration 생성
      프로젝트 폴더 안에있는 settings.py파일을 수정한다.

      INSTALLED_APPS = [
      	...,
      	'[app-name].apps.[Config-name]',
      ]

      그 후 cmd로 이동하여 table 생성을 위한 migration을 진행한다.

      # cmd로 가서 migration 파일을 생성한다.
      $ python manage.py makemigrations [app-name]
      
      # migration으로 실행될 Sql 잘 만들어졌는지 확인
      $ python manage.py sqlmigrate [app-name] [migration 코드]
      
      # migration 실행 - 실행 후 변경사항없이 또 migration하려고 하면 바뀔 것이 없다고 뜸
      $ python manage.py migrate
    3. table 확인
      sqlite3가 기본 제공된다. 이것을 사용해서 만들어졌는지 확인한다.

      # db.sqlite3 파일을 기준으로 생성된 sqlite3 접속
      $ sqlite3 db.sqlite3
  2. Django Shell
    - cmd 혹은 terminal에서 python에 직접 접속하여 실행할 수 있듯이 Django Shell에 접속하여 table의 내용을 수정 및 삭제할 수 있다.
    - Django Shell은 실시간으로 연동이 되지 않기 때문에 code가 변경이 되면 껐다 켜야한다.
    - 이 외의 내용은 따로 정리할 예정
    ```python
    # Django Shell 실행
    $ python manage.py shell
    ```

궁금한 내용 / 어려운 내용❓

  • 이렇게 migrate 하는 DB말고 따로 만들어낸 DB와 연동하는 방법이 궁금하다.

느낀 점😊

기존에 배웠던 react와는 전혀 다른 관점으로 웹을 바라봐야한다는 것이 놀라웠다. 프론트엔드를 배우면서 생겼던 의문들을 하나씩 풀어가면서 수업을 듣게 되어 굉장히 재미있게 듣고 있다. 이 2가지를 적절하게 잘 섞어서 프로젝트를 하고 싶다.

profile
데이터 엔지니어를 꿈꾸는 주니어 입니다!

0개의 댓글