( Project 에 대한 전반적인 제어를 담당해요! )
기능쓰!
shell : Project 내용을 interpreter 로 제어 migrate : DataBase 연동 ( Django 의 모델을 DB 로 이주시킴 ) test : App 에 대한 테스트 환경 동작 runserver : Project 서버 구동
설정항목쓰!
BASE_DIR : root 디렉토리 위치 설정 SECRET_KEY : 서버의 암호화키 ( 노출되서는 안되요! ) DEBUG : 개발환경에서만 사용해야하는 설정 ( 디버깅 기능이 서버구동을 멈출수도 있음! ) ALLOWED_HOSTS : 서버에 접근권한을 줄 호스트를 지정 ( 아무나 주면 안됨! ) INSTALLED_APPS : Django 인스턴스에서 활성화된 모든 어플리케이션들의 이름 - 다수의 프로젝트에서 사용가능, 패키징하여 배포도 가능함. - 기능을 만들었다면, 여기에 등록해야 쓸 수 있음. ( # 은 Django 를 API 서버로만 동작시킬땐, 필요없는 기능 ) # django.contrib.admin - 장고 자체 관리용 사이트 # django.contrib.auth - 장고 자체 사용자 인증 시스템 django.contrib.contenttypes - 컨텐츠 타입을 위한 프레임워크 django.contrib.sessions - 세션 프레임워크 django.contrib.messages - 메세징 프레임워크 django.contrib.staticfiles - 정적 파일담당 프레임워크 MIDDLEWARE : Django 에서 활성화된 매개기능들 ( # 은 Django 를 API 서버로만 동작시킬땐, 필요없는 기능 ) 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', -> XSS 와 비슷한 방식의 페이지 변형 공격을 방지 # 'django.contrib.auth.middleware.AuthenticationMiddleware', -> 장고 자체 사용자 인증 시스템관련 기능 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ROOT_URLCONF : 기준 url 지정파일 참조 TEMPLATES : 템플릿 관련 설정 WSGI_APPLICATION : 앱 구현방식 지정 DATABASES : DataBase 에 대한 설정 ENGINE : DataBase 엔진 지정 NAME : DataBase 의 파일명을 포함한 절대경로값 ( 이외에도, USER, PASSWORD, HOST 등의 추가설정 필요 ) AUTH_PASSWORD_VALIDATORS : 로그인 프로세스의 암호 분별관련 기능 LANGUAGE_CODE : 관리페이지 언어 ( 한글쓰! = 'ko' ) TIME_ZONE : 기준 시간대 설정 ( 서울쓰! = 'Asia/Seoul' ) STATIC_URL : 정적문서가 담길 디렉토리 지정 STATIC_ROOT : 정적경로 지정
- 기준 시간대 관련자료쓰!
기본설정에는 없지만,
RESTful 한 구성을 유지하는데 도움을 주는 설정값!APPEND_SLASH = False - Django가 자동으로 경로탐색을 할 때, ' / ' 를 추가하지 않음!
' RESTful 한 API 구성 ' 을 하기 위해선
urls.py 를 잘 정의해야 해요!
project/urls.py 에서 include 메소드를 이용해
App 내부의 urls.py 를 참조할 수 있어요!
- 역할쓰!
URI 주소값으로 ' 기능 별로 사용될 자원의 위치 ' 를 표현
- 구성 메소드쓰!
- include() : Project 내의 다른 URL 패턴을 포함하는 메소드 ( App 내의 URL 패턴을 참조하는데 주로 사용 ) - path() : URL 패턴에 맞는 자원을 호출하는 메소드 ( 기능에 맞는 URL 을 지정하는데 주로 사용 ) 필수인자인 route, view 와 선택인자인 kwargs, name 를 가짐 필수인자 1. route : URL 패턴을 가진 문자열 - 요청이 처리될 때, Django 는 url 의 첫 번째 패턴부터 일치하는 패턴을 찾을 때 까지 요청된 URL 을 각 패턴과 리스트의 순서대로 비교함. - GET 이나 POST 방식의 매개 변수들, 혹은 도메인 이름검색 X - 예를 들어, https://www.example.com/myapp/ 이 요청된 경우, URLconf 는 오직 myapp/ 부분만 바라봄. https://www.example.com/myapp/?page=3 같은 요청에도, URLconf 는 역시 myapp/ 부분만 바라봄. 필수인자 2. view : Project 에서 route 와 일치하는 패턴을 찾으면, 실행할 특정한 view 함수를 지정함. * 여기서 view 함수란, App 의 views.py 파일에서 지정한 함수 ( 요청으로 온 HttpRequest 객체를 첫번째 인자로, 요청된 경로로 부터 '캡처된' 값을 키워드 인자(kwargs)로 하여 실행되는 함수 ) 선택인자 1. kwargs : view 에 키워드 인자(kwargs)형태로 전달되는 딕셔너리 형태의 인자 선택인자 2. name : path 에 정의한 view 함수 호출에 대한 이름을 지정 URL naming 을 하면, Project 어디에서나 명확하게 참조할 수 있음. (템플릿 포함) 하나만 수정해도 Project 내의 모든 URL 패턴을 바꿀 수 있음.
ORM 이란?
- Object Relational Mapping
장고의 핵심 기능 중 하나인 DataBase 관리 기능이에요!
Object ( 객체 ) 를 이용하여,Relational ( 관계적인 ) 한
Mapping ( 연결 ) 을 하는 기술이죠!
관계형 데이터베이스 ( Relational DataBase ) 에 대해
객체 지향적 ( Objective Oriented ) 으로 제어하는 방식이에요!( 관계형 데이터베이스에 대한 글은 다음에 작성할 예정이에요! )
개념쓰!
App 에 대한 'Model' 들을 제어하는 파일
Model 이란?
단일 데이터 소스 ( 관계형 데이터베이스의 스키마 ) 클래스와 변수가 있음 ( 클래스 = Schema 이름, 변수 = Column 이름 변수에 할당하는 값 = Field 속성 ) 관계형 데이터베이스의 필드에 대한 속성설정을 할 수 있음 ( 저장하는 데이터의 필수적인 필드, 동작들을 포함 ) 관계형 데이터베이스로 이주 ( Migrate ) 할 내용
특징쓰 : 클래스 내부에 메타 클래스로 테이블명을 지정할 수 있음
class Meta: db_table = ' 테이블명 '
( 이외에도 많은 특징이 있지만, 생략! 자세한 내용은 공식문서 를 참고하세요~ )
View 란?
Python 의 메소드와 클래스를 기반으로 정의된 Logic 덩어리 쉽게 말하자면, Django 개발자가 구현한 기능 현 세대의 웹 개발에서는 주로 API 의 한 동작으로 사용
API 란?
: Application Programming Interface
단순히 API 에 대해서만 설명하기에는 너무나도 막연해서,
살을 좀 붙여서 설명드릴게욥 ㅎ
웹 서비스와 관련된 연결환경 ( Interface ) 은 크게 두 가지 있는데요.
개발자가 서비스의 사용자 에게 제공하는 서비스 사용환경 인
User Interface ( UI ) 와개발자가 서비스를 구현하는 다른 개발자 에게 제공하는
응용프로그램 개발환경 인
( API / Application Programming Interface) 입니다.
따라서, API 란!
기존에 있던 프로그램 을 응용 하여 개발 하고자 하는 어떤 개발자를 위해,
다른 개발자가 제공하는 ' 개발자를 위한 프로그램 사용환경 ' 인 것이죠!요청된 정보를 DataBase 에서 호출하는 기능으로 주로 사용 ( Front 와 Back 사이의 End-Point 를 통한 통신처리에 이용 ) urls.py 에서 호출자로 정의한 URL 값이 요청으로 오면, 그에 맞는 View Logic 이 반응하여 응답하는 방식!