[Django] 장고 스터디 1일차

jun·2021년 12월 22일
0

장고스터디

목록 보기
1/4

Django의 장점

왜 장고를 써야할까 ?

  1. Python 생태계
  2. 활발한 커뮤니티
  3. 풀스택 프레임워크
    -> 백엔드 개발에 필요한 거의 모든 것을 Django에서 직접 지원

장고는 MTV 프레임워크다. MVC와 같은 패턴이지만 이름만 다르다.

  • Model -> Django Model
    - 데이터 SQL 쿼리를 생성/수행
  • View -> Django Template
  • Controller -> Django View
    - HTTP 클라이언트로부터 요청을 처리하는 함수.

프론트엔드는 React와 TS를 주로 쓴다. -> 관리하기 편하다.


장고의 주요 기능들 (1)

  1. Function Based Views: 함수로 HTTP 요청 처리
  2. Models: 데이터베이스와 인터페이스
  3. Templates: MVC Framework에서 View와 비슷한 역할을 함. 템플릿 (Template)은 View로부터 전달된 데이터를 템플릿에 적용하여 Dynamic 한 웹페이지를 만드는데 사용됨.
  4. Admin: 심플한 데이터베이스 레코드 관리 UI
  5. Logging: 다양한 경로로 메세지 로깅
  6. Static files: 개발 목적으로의 정적인 파일 관리
  7. Messages framework: 유저에게 알리기 위한 1회성 메세지 노출

장고의 주요 기능들 (2)

  1. Class Based Views: 클래스로 함수 기반 뷰 만들기
  2. Forms: 입력폼을 생성하고 입력값이 유효한지 유효성 검사와 DB에 저장
  3. 테스팅
  4. Internationalization and localization
  5. Caching
  6. Geographic: DB의 Geo 기능 활용 (PostgreSQL 중심)
  7. Sending emails
  8. Syndication Feeds (RSS/Atom)
  9. Sitemaps



장고 앱

재사용성을 목적으로한 Python Package
재사용성을 목적으로 둔 것이 아니라면, 하나의 장고 앱에서 현재 프로젝트의 거의 모든 기능을 구현해도 무방하다. 앱 = 하나의 작은 서비스.

하나의 앱 이름은 현재 프로젝트 상에서 유일해야한다.
새롭게 생성한 장고앱이나 외부 라이브러리 형태의 장고앱은 반드시 settings.INSTALLED_APPS에 등록을 시켜줘야한다.


장고 모델

1. 애플리케이션의 다양한 데이터 저장방법

  • 데이터베이스: RDBMS, NoSQL 등
  • 파일: 로컬, 외부 정적 스토리지
  • 캐시서버: memcached, redis 등

2. 데이터베이스와 SQL

데이터베이스의 종류는 크게 RDBMS, NoSQL이 있다.

  • RDBMS(관계형 데이터베이스 관리 시스템): PostgreSQL, MySQL, SQLite등
  • NoSQL: MongoDB, Cassandra 등
    장고 ORM인 모델은 RDB만을 지원한다.

3. Django Model

  • 장고 내장 ORM
  • 데이터베이스 테이블과 파이썬 클래스를 1:1로 매핑
    - 모델 클래스명은 단수형으로 지정 ex) Posts (X), Post (O)
    • 클래스이기 때문에 첫글자는 대문자로.
    • 매핑되는 모델 클래스는 DB 테이블 필드 내역이 일치해야 함.
  • 장고 모델을 통해 데이터베이스 형상을 관리할 경우
    1. 모델 클래스 작성
    1. 모델 클래스로부터 migration 파일 생성 -> makemigration 명령
    2. 마이그레이션 파일을 데이터베이스에 적용 -> migrate 명령
    3. 모델 활용
  • 장고 외부에서, 데이터베이스 형상을 관리할 경우
    1. 데이터베이스로부터 모델 클래스 소스 생성 -> inspectdb 명령
    1. 모델 활용
from django.db import models

class Post(models.Model):
    message = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

4. 장고 모델필드 (1)

  1. Primary Key: AutoField, BigAutoField
  2. String: CharField, TextField, SlugField
  3. Date/Time: DateField, TimeField, DateTimeField, DurationField
  4. T/F: BooleanField, NullBooleanField
  5. Numeric: IntegerField, SmallIntegerField, PositiveIntegerField, PositiveSmallIntegerfield, BigIntegerField, DecimalField, FloatField
  6. File: BinaryField, FileField, ImageField, FilePathField

5. 장고 모델필드 (2)

  1. 이메일: EmailField
  2. URL: URLField
  3. UUID: UUIDField
  4. IP: GenericIPAddressField
profile
hi

0개의 댓글