2023. 3. 2. 18:04ㆍ개발/토막난 상식
dj ango 아니구 장고 입니다
Django는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크 (web application framework)
쉽고 빠르게 웹사이트를 개발 할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크
모델-뷰-컨트롤러(MVC) 패턴
웹 프레임워크 = 웹 애플리케이션 프레임워크
동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션
프레임워크의 일종
웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 데이터베이스 연동, 템플릿 형태의 세션 관리, 코드 재사용 등의 기능을 포함
여기서 잠깐
프레임 워크란 (틀 일)
소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의
설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경
>상호 협력하는 클래스와 인터페이스의 집합
>응용 프로그램이 수동적으로 프레임워크에 의해 사용
장고 특징
MVC패턴 기반 MVT(Model-View-Template)
객체 관계 매핑 (ORM, Object-Relational Mapping)
자동으로 구성되는 관리자 화면
우아한 URL 설계
자체 템플릿 시스템
캐시 시스템
다국어지원
풍부한 개발 환경
소스 변경사항 자동 반영
동작원리
사용자가 어떤 행동을 요청을 보냄 (URL 주소 입력)
View (중간관리자)는 받은 요청을 확인하고, Model (데이터 관리)에 해당 요청을 찾아달라고 지시를 내림
Model(데이터 관리)은 Database에서 데이터를 찾아서 View (중간관리자)에 전달
View (중간관리자)는 데이터를 Template에 전달하여, HTML 파일과 조합하여 화면을 사용자에게 전달
프로젝트 와 어플리케이션 차이
프로젝트 :
개발 대상이 되는 전체 프로그램을 의미
어플리케이션 :
프로젝트 하위의 서브 프로그램을 의미
여러 개의 어플리케이션이 모여서 프로젝트를 구성할 수 있음
모듈 별로 만들어서 나중에 붙일 수 있음
데이터 마이그레이션
https://www.redhat.com/ko/topics/automation/what-is-it-migration
manage.py : Django 프로젝트와 다양한 방법으로 상호작용하는 커맨드라인 유틸리티라고 한다.
안의 내용에는 DJANGO_SETTINGS_MODULE 이라는게 있어 해당 장고 프로젝트의 setiings.py값을 알려주는 역할함
init.py 이란
- init.py란 폴더(디렉터리)가 패키지로 인식되도록 하는 역할도 하고, 이름 그대로 패키지를 초기화하는 역할을 한다. 즉, import로 패키지를 가져오면 init.py 파일이 실행되므로 이 파일에서 from . import 모듈 형식으로 현재 패키지에서 모듈을 가져오게 만들어야 한다.
- ※ 참고로 python3.3 버전부터는 init.py 파일이 없어도 패키지로 인식한다(PEP 420). 하지만 하위 버전 호환을 위해 init.py 파일을 생성하는 것이 안전한 방법이다.
ASGI(Asynchronous Server Gateway Interface)
그대로 읽어 보면 비동기 서버 게이트웨이 인터페이스인데 이게 무엇인고 하니
web server와 프레임워크(Django), 어플리케이션을 비동기로 연결해 주는 Python의 표준 인터페이스라고 보면 된다.
여러 프로토콜 스타일을 처리 할 수 있다(HTTP, HTTP/2, WebSocket 포함)
settings.py의 역할
- 프로젝트에 필요한 설정값들이 명시되어 있다.
- 루트 디렉터리를 포함한 각종 디렉터리 위치, 로그의 형식, 프로젝트에 포함된 애플리케이션의 이름 등이 지정되어있다.
urls.py
- Django내에서 Web service를 제공하는데 url를 넘기기 전에 main페이지와 각 app들과 url를 mapping해주는 기능을 django ulrs.py에서 지원한다.
- app들이 다양해지고 app하위에 또다른 기능들이 생기면 main urls.py에서 모든 url를 mapping하지 않고 하위 app urls.py에 각 기능에 대한 url를 위탁할 수 있다.
WSGI란?
WSGI는 Web Server Gateway Interface의 줄임말로 파이썬의 표준 게이트웨이 인터페이스입니다.
파이썬에서의 CGI정도로 이해하시면 됩니다만 더 쉽게 생각하자면 일종의 프로토콜 처럼 생각할 수도 있겠습니다.
웹 서버와 파이썬 웹 어플리케이션 간의 인터페이스 역할
------------------------------------------------------------------------------------------------------------------------------------------------
manage.py
프로젝트 관리를 도와줌
이 스크립트로 다른 설치작업 없이 컴퓨터에서 웹서버 실행 가능
명령어
- startapp : 앱 생성
- runserver : 서버 실행
- createsupersuer : 관리자 생성
- makemigrations app : app 모델의 변경사항 체크
- migrate : 변경사항을 DB에 반영
- shell : 쉘을 통해 데이터를 확인
- collectstatic : static 파일을 한곳에 모음
Root App
settings.py
- setting.py는 프로젝트 환경설정에 대한 내용을 담고 있다.
- DEBUG : 디버그 설정 개발시에는 true값으로 지정, 실제 서비스 배포시에는 false로 설정
- INSTALLED_APPS : pip로 설치한 앱 또는 본인이 만든 app 추가
- MIDDLEWARE_CLASSES : request와 response 사이의 주요 기능 레이어 (인증, 보안관련 내용을 다룸) - TEMPLATES : 장고 템플릿 관련 설정, 실제 뷰 (html)를 관리
- DATABASES : 데이터베이스 엔진의 연결 설정
- STATIC_URL : 정적파일의 URL(css, javascript, image 등)
urls.py
- urlpatterns 리스트의 항목(엔드포인트, 대상)에 따라 request를 라우팅
- 위 항목에서는 엔드포인트가 admin/인 request에 대해서는 장고 기본 admin urls을, 엔드포인트가 없는 request에 대해서는 users라는 앱의 urls를 라우팅
User Defined App
admin.py
- adminpage에서 GUI를 통해 관리할 모델을 선언하는 페이지
- createsuperuser 명령어를 통해 만든 관리자 ID, 비밀번호로 접근
models.py
- 앱에서 사용하기 위한 데이터 베이스 테이블을 ORM 문법에 의거하여 작성하는 파일
- 클래스는 DB에서 테이블과, 각 멤버 객체들은 column에 대응
urls.py
- root app에서 라우팅된 request의 엔드포인트에 따라 라우팅될 view가 정의된 파일
views.py
- request가 최종적으로 라우팅되어 동작시킬 로직이 정의된 파일
'개발 > 토막난 상식' 카테고리의 다른 글
함수 기반 뷰(Function-Based Views) vs 클래스 기반 뷰(Class-Based Views) (0) | 2023.03.03 |
---|---|
Can't connect to MySQL server on '127.0.0.1' (10061) (0) | 2023.03.03 |
아나콘다 설치 오류 (0) | 2023.03.02 |
wsl 사용시 파이썬 터미널아닌 출력에만 나올때 해결 방법 (0) | 2023.02.28 |
[Python] __pycache__의 정체 (0) | 2023.02.28 |