Django

Django 교육 3일차

miin1635@ 2023. 8. 9. 16:59

Django란 무엇인가?  API 호출 단위 (Object)와 Relation Table을 서로 맵핑해주는 웹 프로그래밍 프레임워크이다. (ORM이다.)  

전체적인 프로젝트 진행 방식 

더보기

 

 

기본적인 구조 api(1)를 호출 할 때와 web page(2) 를 호출 할 때, return 이 각각 다르다 . 

(1) : template 리턴해준다. 

(2) : data를 리턴해준다 . 

 

  nospoons.urls.py -->    api.urls.py (url 패턴을 매치함) --> view.py 에서 함수 호출한다. --> models.py 파일에서 데이터 테이블을 만든다. 

models.py에서 오브젝트에 대한 db테이블을 생성한다. 

*models.py의 역할은?  : 각 앱에 대한 데이터베이스 스키마를 정의한다. 

 

python manage.py migrate "app_name" 을 통해 마이그레이션 한다.  (마이그레이션 해줌으로써 각 앱의 데이터베이스 테이블을 생성한다.) 

2. python manage.py migrate [app_name] [migration_name]

- 마이그레이션을 적용하는 명령어입니다. 즉 실제 DB에 변경사항을 적용하는 명령어라고 생각하시면 됩니다.

makemigrations와 같이 app_name을 지정해서 특정 app만 migrate 할 수 있으며 app_name 뒤에 마이그레이션 파일의 이름을 지정하면 해당 번호(버전)의 마이그레이션을 적용하게 됩니다. 즉 이전 버전으로 되돌리는 것도 가능합니다.

예시로 한번 살펴봅시다.

마이그레이션(Migration)이란?

장고 공식 문서에서는 마이그레이션이 모델의 변경 내역을 DB *스키마에 적용시키는 장고의 방법이라고 설명하고 있습니다.

장고는 ORM을 사용하기 때문에 models.py와 클래스를 통해 DB 스키마를 생성하고 컨트롤 하게 되는데, 이 때 DB 스키마를 git처럼 버전으로 나눠서 관리 할 수 있게 해 주는 시스템이라 생각하시면 됩니다.

 하나의 마이그레이션 파일은 해당 마이그레이션이 생성된 시점의 모델의 구조(DB의 스키마)를 담고 있습니다.

https://tibetsandfox.tistory.com/24     

 

장고(Django) - 마이그레이션(Migration)

마이그레이션(Migration)이란? 장고 공식 문서에서는 마이그레이션이 모델의 변경 내역을 DB *스키마에 적용시키는 장고의 방법이라고 설명하고 있습니다. 장고는 ORM을 사용하기 때문에 models.py와

tibetsandfox.tistory.com

 

그럼 장고를 왜 사용할까? 

Object (함수 객체)단위의 프로그래밍으로 Relational DataBase를 다루기 위해서 사용한다. (아래 링크를 참고)

https://hanamon.kr/orm%EC%9D%B4%EB%9E%80-nodejs-lib-sequelize-%EC%86%8C%EA%B0%9C/

❗️ORM 사용 이유

  • OOP vs Relational Database
  • 객체 지향 프로그래밍은 클래스를 이용하고 관계형 데이터베이스는 테이블을 이용하는데 객체 모델과 관계형 모델 간의 불일치가 존재한다.
  • ORM을 이용해서 데이터베이스 접근을 프로그래밍 언어의 관점에서 맞출 수 있다.
  • ORM을 이용해서 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
  • ORM을 이용해서 SQL 문을 직접 작성하지 않고 엔티티를 객체로 표현할 수 있다.
  • ORM을 이용해서 객체를 통해 간접적으로 데이터베이스를 다룬다.
  • 이를 통해 데이터베이스 세계와 프로그래밍 언어 사이의 개념의 간극을 줄여준다.
  • 이를 통해 느슨하게 연결된, 테스트에 용이한 애플리케이션을 만들 수 있다.

 

 

[데이터베이스] ORM이란? (Node.js ORM Lib Sequelize 소개) - 하나몬

⚡️ ORM (Object Relational Mapping) ❗️ORM 이란? ORM은 Object Relational Mapping(객체-관계-매핑)의 약자이다. ORM은 객체와 데이터베이스의 관계를 매핑해주는 도구이다. ORM은 프로그래밍 언어의 객체와 관

hanamon.kr

 

1.엘라스틱 서치 데이터를 구축했다 .  (filebeat로 데이터를 수집해서) 

-엘라스틱 서버 포트 열기, 키바나 서버 포트 열기, 파일비츠 독자적인 수집기에서 elasticsearch 포트로 데이터 전송 했다.

2.가상환경 만들고  Django 설치 --> 기본 설정 후 특정 포트로 장고 서버 열었다. 

3.장고안에 프로젝트를 만들고 그 안에 앱을 하나 만들었다 (하나의 앱은 여러가지 class(기능)을 한다. 이 기능을 하는 주체들을 Object라 한다.) 

4.이 앱들은 yasg Api를 통해서 알 수 있다. (Swagger 페이지 , Swagger 페이지는 yasg 모듈에 의해 나타난다.)

https://velog.io/@emrrbs9090/DjangoSwagger-with-DRFyasg

 

[Django]Swagger를 통한 API 문서 작성하기

Swagger with DRF_yasg를 통한 Django API 문서 작성하기

velog.io

(이 페이지 참조 해라) 

이제 각 앱에 대해서 RestAPI를 통해 통신하는 메소드를 정의해야한다. 우리는 대표적으로 elasticsearch DB와 통신을 하여 그 데이터를 view.py를 거쳐서 template에 담아준 후, 홈페이지에 띄우는 실습을 진행한다. 

모든 기능은 request를 매개변수로 받는다.  

*여기서 질문 seettings.py에서 pagenation을 설정해주면,  어떻게 될까...? 

 

 

 

 

 

 

 

'Django' 카테고리의 다른 글

장고 스터디 확장 (WSGI)  (0) 2023.08.16
Swagger 설치법  (0) 2023.08.14
장고 복습  (0) 2023.08.14
Django 교육 2일차  (0) 2023.08.08
Django 교육 1일차  (0) 2023.08.07