[Django] 오랜만이야 Django.. 잘.. 지냈..지..?

sorzzzzy·2021년 10월 31일
1

TIL

목록 보기
3/36
post-thumbnail

안녕하십니까?
저는 해커톤을 앞두고 발등에 불이 떨어진 여자 1호(a.k.a내 머리속의 지우개) 입니다^^,,
한때 그렇게 장고를 달고 살았으면서 이렇게 될 수 있냐구요?

네. 그렇더라구요ㅎ

무튼~ 해커톤 전에 장고 한 번 쓰윽 훑으면서 겸사겸사 정리하려고 쓰는 글!
시작해보겠다 빠이팅🔥

모든 환경은 Mac 기준이다 😋


🏷 프로젝트 시작하기

1. 가상환경 만들기
➡️ python3 -m venv [이름]

2. 가상환경 실행
➡️ source [이름]/bin/activate

3. django 설치
➡️ pip3 install django

4. 프로젝트 생성
➡️ django-admin startproject [이름]

5. django가 사용할 데이터베이스 만들기
➡️ python3 manage.py migrate
➡️ 이렇게 하면 sqlite3 파일이 생성됨

6. 앱 생성
➡️ python3 manage.py startapp [이름]
앱을 생성하고 나면, 프로젝트에서 사용할 수 있도록 등록을 해줘야 한다.
최상위 settings.pyINSTALLED_APPS 맨 아래에 앱 이름을 추가하자!

📌 migration
➡️ python3 manage.py makemigrations [앱이름]
➡️ python3 manage.py migrate

7. 프로젝트 실행
➡️ python manage.py runserver


🏷 MTV 패턴

웹 프로그램 개발 시 일반적으로 언급되는 패턴은 MVC(model - view - controller) 패턴이다.

  • M(model)은 데이터
  • V(view) 는 사용자 인터페이스
  • C(controller)는 데이터를 처리하는 로직

➡️ 장고에서는 MTV(model-template-view) 패턴으로 바꿔서 정의


✔️ 장고에서의 MTV(model-template-view)

  • 모델(Model): 모델 클래스, 데이터 객체 정의와 그 데이터 (models.py)
  • 템플릿(Template): 사용자에게 보여지는 인터페이스 화면 (templates/*.html)
  • (View): 데이터를 가져오고 적절하게 가공하여 그 결과를 템플릿에 전달하는 역할 (views.py)

✔️ http 요청과 응답의 흐름

  1. 클라이언트가 특정 주소(url)로 요청을 보냄(GET사용)
  2. 장고 웹 앱에 요청이 들어옴
  3. url conf 모듈을 이용하여 요청의 url을 확인(무슨 쿼리 파라미터가 있는지, 무슨 path가 있는지)
  4. 해당 url에 대한 처리를 담당하는 뷰를 결정 (urls.py를 보고 정의된 내용에 따라)
  5. 뷰는 로직을 실행
  6. 필요한 경우 모델을 통해 데이터를 처리
  7. 템플릿을 기반으로 최종 html 코드를 생성(render라는 메소드에서 일어남)
  8. 생성된 html 코드를 클라이언트로 보냄
  9. 클라이언트가 받은 html 코드를 렌더링

🏷 Django 모델 개요

모델이란❓ 우리가 만들 웹 서비스에서 사용할 정보의 내용, 특성을 기술하거나 정의한 것
➡️ 웹 사이트를 만들 때 어떠한 정보들을 저장하기 위해 사용
➡️ 보통은 사이트의 게시물, 댓글, 회원 정보들도 모델의 범주에 속하는데 이러한 정보를 시스템에서 처리하고 저장하기 위해 모델링이라는 과정을 거쳐야 함


맛집 사이트를 개발한다고 가정했을 때 모델링 하는 과정

1️⃣ 취급할 정보의 대략적인 종류를 결정.
결정된 종류 각각이 모델 클래스가 됨!(맛집, 평가, 회원, 등)
2️⃣ 각 취급할 정보의 속성을 정리.
ex) 맛집(주소, 위치, 명칭, 전화번호, 사진 등), 평가(별점, 글쓴 시각, 글쓴 회원 등), 회원(이메일, 닉네임, 등)
3️⃣ 각 속성의 자료형을 결정.
맛집(주소(문자열), 위치(위경도-부동소수점형), 명칭(문자열), 등)
4️⃣ Relation 관계 정의
relation이 어떤 모델을 가리키는지 구조를 만듦

📌 모델 클래스 (= 파이썬 클래스)

  • 어떤 형태의 정보가 다뤄지고 저장될 지를 정의
  • 우리가 만들 장고 웹 앱 내에서 코드로 구현되고, 웹 앱이 구동되면서 실제 데이터베이스와 연동됨

🏷 Django 폼 개요

폼이란❓

➡️ 사용자 웹 인터페이스를 구성하는 것 중에서 Form은 사용자의 입력을 받기 위한 필드나 위젯들의 묶음을 의미함
➡️ 우리가 자주 보는 로그인 화면이나, 글쓰기 화면 등에 데이터를 입력 받는 입력 칸들과 버튼으로 이루어져 있음

<form action=”데이터가 전달될 주소(요청/이동할 주소)” method=”http 요청 방식">
  <input type=”text” name=”title”/>
  <button type=”submit”>입력</button>
</form>

✔️ html form 기본적인 형태

  • Action : 여기서 입력되는 정보들을 받는 url
  • Method : HTTP 요청 방식에는 GET / POST / PUT / DELETE가 있음
    ➡️ GET / POST를 사용하는데 GET는 주소가 노출되어도 괜찮고, 다른 사용자에게 공유가 가능한 정보를 처리할 때 사용되고, POST는 회원가입이나 결제와 같이 다른 사용자와 결제 해서는 안되는 정보를 처리할 때 사용됨

장고에서는 이러한 폼을 구성하기 쉽도록 프레임워크 단에서 지원하고 있음!

  • 모델 클래스의 모델 정보들과 연동가능(binding)
  • Validation 체크 (입력된 정보들의 유효성 검사)를 쉽게 해줌
  • 악의적인 데이터를 필터링 함(sanitisation)
  • 짧고 간결한 코드로 폼 인터페이스를 구현함

장고 : 안녕 모태 ㅋ

profile
Backend Developer

1개의 댓글