반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 장고
- dump
- elasticsearch
- ELK
- 엘라스틱서치
- 키바나
- 리트코드
- 파이썬
- programmers
- leetcode
- 알고리즘
- dfs
- kibana
- CentOS
- 프로그래머스
- 해시
- Easy
- solution
- Spark
- Django
- RecommendationSystem
- python
- Algorithm
- twosum
- Medium
- 깊이우선탐색
- AWS
- 스파크
- daspecialty
- Optimization
Archives
- Today
- Total
Archive
[Django] 장고 기본개념 ( MVT / Structure / Project생성 / Application생성 ) 본문
------ Web ------/Backend
[Django] 장고 기본개념 ( MVT / Structure / Project생성 / Application생성 )
enent 2022. 6. 19. 23:53반응형
1. MVT
웹 개발시 일반적으로 사용되는 MVC의 Django 버전.
데이터, 인터페이스, 데이터 처리로직을 분리하여 독립적으로 실행하고 각 로직들의 영향도를 최소화 하도록 설계된 개념이다
Model(Model) | View(Controller) | Template(View) |
DB에 저장되는 데이터 | 데이터를 가져오고 처리결과를 template에 전달 | 사용자에게 보여지는 UI |
1) Model
- 사용될 데이터에 대한 정의
- models.py 에 정의
- ORM(Object Relational Mapping)을 통해 DB를 Class로 mapping
: 하나의 Model Class는 하나의 DB Class에 Mapping, Model Class의 속성은 Table의 Column에 매핑
2) URL conf
- URL 과 View 가 매핑되어 있음
- urls.py 에 정의
- Path Converter을 통해 매칭 여부 파악
- 일반적으로는 path()함수를 많이 사용하고, 정교한 정의가 필요할 시 re_path()함수 사용
3) View
- 웹 요청을 처리하고, 해당 결과를 HTML로 변경하여 Response 를 웹 Client로 반환
- views.py에 정의
- 다양한 형태의 Response를 만들기 위한 로직들이 작성되는 공간
4) Template
- 화면 UI를 Template에 맞게 작성한 html파일
- 적절한 Dir에 위치시키고, Settings.py의 TEMPLATE_DIRS, INSTALLED_APPS에 지정해야함
*MVT 개발 순서
정해진 순서는 존재하지 않으며, 자신만의 순서를 찾아나가는 것이 필요하다.
화면 설계는 View - Template이 연결되어 있으며, 테이블 설계는 Model에 반영되어 있다.
-> 독립적으로 개발할 수 있는 Model을 먼저 개발하는 것이 일반적이다
2. 프로젝트 구조
- Root Dir : 최상위 디렉토리. 주로 settings.py의 BASE_DIR
- db.sqlite3
- manage.py : Django 명령어 처리
- Project Dir : 프로젝트 디렉토리. 프로젝트 관련 파일들
▶ __init__.py : Python Package로 인식하게끔 해주는 파일
▶ settings.py : Project 설정 파일
▶ urls.py : Project Level의 URL 패턴을 정의하는 최상위 URLconf. 보통은 Application Dir마다 하위 urls.py가 있음
▶ wsgi.py : 웹 서버와 WSGI 규격으로 연동하기 위한 파일
- Application Dir : 애플리케이션 디렉토리. 애플리케이션 관련 파일들
▶ __init__.py : Python Package로 인식하게끔 해주는 파일
▶ admin.py : Admin 사이트에 모델 등록
▶ apps.py : 애플리케이션의 설정 클래스 정의
▶ Migrations Dir : DB 변경사항 관리를 위한 디렉토리
▶ models.py : DB Model Class 정의
▶ tests.py : 단위 테스트용 파일
▶ views.py : 뷰 함수 정의
▶ Template Dir : 템플릿 파일들. Project Level의 Template과 Application Level의 Template으로 구분
▶ Static Dir : CSS, Image, Js 파일들. Project Level의 Template과 Application Level로 구분
▶ Log Dir : 로그 파일들. settings.py의 LOGGING항목으로 지정
1) 프로젝트 생성
$ django-admin startproject mysite
Pycharm 기준으로 New Project - Django 로 생성하면 해당 명령어 없이도 프로젝트가 생성된다.
2) 애플리케이션 생성
$ python manage.py startapp polls
애플리케이션 디렉토리와 하위 파일들이 자동으로 생성되는 것을 볼 수 있다.
3) settings.py 설정
settings.py 내에는 각종 Dir path, Log type, Application 이름 등이 지정되어 있다
초기에 추가/변경이 필요한 설정값들
- ALLOWED_HOSTS
: runserver 기동할 서버 ip 등록
: DEBUG = TRUE -> 개발모드 / FALSE -> 운영모드
: 개발모드 시, 값을 지정하지 않아도 ['localhost', '127.0.0.1'] - INSTALLED_APPS
: Application 설정 Class 등록 - DATABASES
: DB 엔진 설정 ( Mysql, Oracle, PostgreSQL 등 ) - TIME_ZONE
: UTC -> 'Asia/Seoul' (한국에서만 서비스시, USE_TZ=False설정이 편함(장고가 자동으로 TZ조절하는 설정))
4) 기본 테이블 설정
$ python manage.py migrate
Django는 USER와 Table이 필요하다는 가정하에 설계된 프레임워크로, DB TABLE을 만들지 않더라도 해당 과정이 필요하다.
5) 관리자 생성
$ python manage.py createsuperuser
Username, Email Address, Password 입력
6) Runserver
$ python manage.py runserver 0.0.0.0:8000
파이썬 웹 프로그래밍 - 3. Django 웹프레임워크
반응형
'------ Web ------ > Backend' 카테고리의 다른 글
[Django] Form (0) | 2022.07.03 |
---|---|
[Django] Template System (0) | 2022.06.28 |
[Django] Admin (0) | 2022.06.26 |
[Django] View / Template Coding Overview (실습2) (0) | 2022.06.26 |
[Django] Model Coding Overview (실습1) (0) | 2022.06.23 |
Comments