Django로 웹 개발하기 - 2. Django의 개발 방식 및 모델링

1 minute read

이 글은 fast_campus의 파이썬 웹 개발 수업을 듣고 정리, 추가한 내용으로 Django로 웹 개발을 할때 알아야 할 기본적인 내용과 모델링 하는 과정을 살펴보겠다.

※ 참고 : 코딩 컨벤션(Coding Convention)

  • 코드를 작성할때 사용되는 일정한 기준
  1. PEP 8 - 파이썬 코드를 위한 가이드 라인

  2. flake 8 - 파이썬 코드의 스타일을 검사해주는 도구

    • $pip3 install flake8
    • 사용법: \$flake8 hello.py

Django의 개발방식(MTV 패턴)

model, template, view

  • model : 데이터베이스에 저장되는 데이터
  • template : 사용자(user)에게 보여지는 부분 (html)
  • view : 실질적으로 프로그램 로직이 동작하여 템프릿에 전달

1. 모델링 설계 하는 방법

  1. 어떤 필드가 필요한지 생각한다
  2. 생각이 되면 적어본다.
  3. 각 필드는 어떤 타입이 되어야 하는지 생각 혹은 논의한다.

2. 모델링 설계 해보기 1

  • 주문(Order) 모델링

    • 주문번호 - pk
    • 고객-고객번호 relation - pk
    • 총 금액 - IntegerField
    • 주문 상태 - choice
  • 포스트(Post) 모델링

    • 글 번호 - pk
    • 유저-글쓴이 번호 relation - pk
    • 글 내용 - TextField
    • 글 쓴 날짜 - DateTimeField
    • 글 수정한 날짜 - DateTimeField

2. 모델링 필수 개념

▶ key

  • Primary key(기본키, pk)

    테이블에 저장된 각각의 데이터를 유일하게 구분하는 키.
    바꾸어 말하면, 데이터베이스(DB) 테이블에 각 행의 식별 기준인 기본키가 필요하다.
    Django 에는 기본키로 id가 디폴트로 지정되어있다.
    id = models.AutoField(primary_key=True) + 얘를 pk로 지정하겠다.

  • Foreign key(외래키)

    각 테이블간에 연결하기 위해서 특정 테이블에서 다른 테이블의 참조되는 기본키를 외래키라고 한다.
    Users : id, user_name, phonenumber
    Products: id, _product_name
    , productprice
    Orders: id, _product_name
    , user_name, total_price, status

    • 각 테이블의 id는 pk, Orders의 product_name, user_name은 Foreign key

▶ Django Field types

  • CharField : 작은 문자열 또는 큰 문자열을 위한 스트링(문자열) 필드.
  • TextField : 큰 문자열 필드.
  • IntegerField : 정수 필드
  • FloatField : 실수 필드
  • BooleanField : True / False 필드.
  • DateTimeField : 날짜와 시간을 가지는 필드

  • FileField : 파일 업로드 필드.
  • EmailField : EmailValidator를 사용해서 값이 유효한 email인지 체크하는 CharField.
  • ImageField
  • DecimalField
  • AutoField
  • DateField

  • class DateField(auto_now=False, auto_now_add=False, **option)
  • auto*now_add : 데이터가 *처음_ 생성되어 저장할 때
  • auto_now : 데이터가 저장될때(update)

3. 모델링 설계 해보기 2

  • 포스트(Post) 모델링 다시 해보기

    • 글 번호 - pk
    • 유저-글쓴이 번호 relation - pk
    • 글 제목 - CharField(max_length=30)
    • 글 내용 - TextField
    • 글 쓴 날짜 - DateTimeField(auto_now_add=True)
    • 글 수정한 날짜 - DateTimeField(auto_add=True, Null=True)
  • Quiz) 댓글 Model 만들기

    • user_image ImageField
    • user_name CharField(max_length=30, Null=True)
    • email CharField(max_length=50,Null=True)
    • content TextField(max_length=200, Null=False)
class Comment(models.Model):
	user_name = models.CharField(max_length=30, Null=True)
	email = models.CharField(max_length=50,Null=True)
	content = models.TextField(max_length=200, Null=False)
  • Model Relationship
    • Many-to-Many
    • Many-to-One (One-to-Many)
    • One-to-One

위와 같은 방식으로 user, post, product, order 등을 모델링 할 수 있다.

Leave a comment