장고 (Django)
- 파이썬으로 만들어진 오픈소스 웹어플리케이션 프레임워크
https://www.djangoproject.com/start/
장고 특징
장고장점
- 파이썬 사용.
* 언어의 진입장벽 낮은 편
* 파이썬 기반 라이브러리(ex_머신러닝, 데이터분석)와 융합하여 사용하기 편함
- 생산성↑. 개발비용↓
* 프로젝트가 앱 단위로 구성.
* 앱은 독립적인 환경으로 구성
* 분업 용이 (앱 = 모델, 템플릿, 뷰 구성)
* Admin을 이용한 빠른 구현
* 반복적으로 구현해야하는 것 대부분 이미 만들어져 있다. (ex_로그인,회원가입, 인증 등)
- URL 디자인 편리
* 여러 과정을 거쳐 만들어야하는 url정의 후 사용해야하는 것을
Django에 내장함수가 있어서 url에 포함된 정보 형식을 지정하여 정보에 맞게 url 시용 가능
- 안정성과 검증, 커뮤니케이션, 자료
* 성공 도입사례 (ex_Instagram)를 통해서 안정성, 기능이 검증
* 출시된지 시간도 좀 지났고 커뮤니티활동도 활발, 문서도 많음
- 개발환경의 유용
* 아파치 등 웹 서버가 없어도 Test 가능
- 자체 템플릿 시스템, 캐시 시스템, 다국어 지원, 소스 변경사항 자동 반영
장고단점
- 파이썬 사용
* 파이썬의 단점이 그대로 포함되어있다.
(속도, 실행될때까지 걸리지 않는 에러 등)
- 웹 프레임워크가 비교적 속도가 느림
- 숙련도가 필요
* Django 자체 + Python 언어
ex_ORM 기반이기때문에 원하는 결과가 나오지 않으면 해결하기 위해서 노력을 해야한다.
- 커스텀하기 어려움
* 이미 만들어져잇는 것을 원하는 것으로 바꾸기 어려움
- 한글화 문서 부족
* (한국인 한정) 자료가 번역이 덜 되어있음
장고 기본 구조
- MTV 패턴
* MVC 디자인 패턴과 거의 비슷
* Model : Database 관련 Manage, 연결, 실행 등
* Template : 실제 보여주는 화면 인터페이스. (화면의 표현 방식)
* View : Model과 View를 연결해주는 Controller
장고 - 프로젝트(Project), 앱(App), 템플릿(Template)
Django Project
- 하나의 웹 사이트로 이해
- 여러개의 웹 페이지가 모인 웹 사이트 형태
Django App
- 웹 사이트에서 기능을 가진 웹 페이지로 이해
- 기본적으로 정의되어있는 앱(관리자, 인증 게시판 앱 등)
- 개발자가 원하는 기능을 구현하는 앱
Django Template
- MTV에서 나오는 Template와 같음
- 실제 보여주는 화면을 정의
- 앱별로 보여지는 여러개 생성 가능
- 템플릿 사용이 장점이 되는 이유
코드로 일일히 다 구성하는 것 보다 템플릿으로 가져와서 쓰는것이 더 좋음
장고 - 프로젝트(Project), 앱(App), 템플릿(Template) 파일 구성
전체 프로젝트 파일 구성
Django_프로젝트(project)
├─ config
│ ├─ __init__.py
│ ├─ asgi.py
│ ├─ settings.py
│ ├─ urls.py
│ └─ wsgi.py
├─ Django_앱(App)
│ ├─ migrations
│ │ └─ __init__.py
│ ├─ Templates
│ │ └─ 템플릿.html
│ ├─ __init__.py
│ ├─ admin.py
│ ├─ apps.py
│ ├─ models.py
│ ├─ tests.py
│ └─ views.py
└─ manage.py
Django_Project 파일 구성
Django_프로젝트(project)
├─ config
│ ├─ __init__.py
│ ├─ asgi.py
│ ├─ settings.py
│ ├─ urls.py
│ └─ wsgi.py
└─ manage.py
- __init__.py
*
- asgi.py
*
- settings.py
* 프로젝트의 설정에 관한파일
* 프로젝트 안에 앱을 추가하면 추가해줘야 하는 부분
- urls.py
* 요청과 응답을 처리해주는 url 파일
* url 선언을 저장하는 파일
- wsgi.py
*
- manage.py
* 여러 방법으로 상호작용 하는 파일
Django_App 파일 구성
Django_앱(App)
├─ migrations
│ └─ __init__.py
├─ __init__.py
├─ admin.py
├─ apps.py
├─ models.py
├─ tests.py
└─ views.py
- __init__.py
*
- admin.py
* 관리자 페이지 관련 파일
- apps.py
*
- models.py
* DB와 연결할 수 잇게 ORM역할을 하는 파일
- tests.py
* 이름 그래도 Test를 위한 파일
- views.py
* 기능 구현을 위해 기능들을 정의해두는 파일
* 템플릿.html 로 데이터를 전달 하거나
* url을 통한 요청을 처리하거나
Django_템플릿
Templates
└─ 템플릿.html
- 템플릿.html
* 실제 보여주는 화면을 정의해둔 파일
* view 컨트롤러 통해서 화면 출력
'Software 공부 > Software Web Knowledge' 카테고리의 다른 글
[Software][Knowledge][Django] QuerySet API (0) | 2023.01.05 |
---|---|
[Software][Knowledge] DB, DBMS, Table, SQL (0) | 2023.01.05 |
[Software][Knowledge] shell, 인터프리터 언어, 컴파일 언어, Django Shell 사용하기 (0) | 2023.01.05 |
[Software][Knowledge] Framework (프레임워크) (0) | 2023.01.05 |
[Software][Knowledge] 웹 (0) | 2023.01.05 |