Djang 시작 전

  1. 파이썬 기초 (1) dictionary
    데이터들을 대응시켜줌
    탐색의 기준 = key, 찾고자하는 값 = value


  1. 예외처리 (1) 문법에러 종류
    • 파싱에러
      오타, 문법에러, 인덱스 에러 등
      실행 자체에 영향을 줌
    • 예외
      실행중 감지되는 에러
      자료형, 이름 등


(2) try except
자바의 try catch

try :
  시도할 코드
except:
  오류 발생시 실행할 코드
finally:
  예외 발생 여부와 상관없이 실행할 코드

https://docs.python.org/3/tutorial/errors.html


  1. OOP 세상 모든것들을 상태와 동작으로 표현!
    이는 변수와 함수로 표현 가능
    클래스를 통해 변수, 함수를 찍어냄


  1. 모듈, 패키지, 라이브러리 모듈 : 파이썬으로 작성된 가장 작은 파일

    패키지 : 모듈의 집합, 모듈의 계층 단위

    라이브버리 : 미리 준비된 모듈 및 패키지
    python standard library(내장)와 python index library(외장)가 있다

    pip : 라이브러리 관리 도구

  2. Web Service (1) Web World Wide Web

(2) URL, HTTP, HTML URL = 정보의 위치를 나타냄
HTTP = 정보자원으로 접근하고 통신하게 하는 약속(get, post 등)
HTML = 응답으로서의 정보 자원 자체, 다른 정보 자원과 연결해줌

(3) Server
웹 프로그램에 대한 정보를 저장하고 있는 컴퓨터라고 보면 쉬움

(4) Web Service
HTML과 URL을 미리 준비하고 사용자 요청에 대한 응답을 보낼 수 있는 프로그램


  1. Web Framework
    웹 서비스를 쉽게 만들어 주는 기계
    정형화 되어있는 웹개발을 효율적으로 하기 위해
    미리 만들어 놓은 웹 개발의 기능 단위, 설계 단위의 집합(구조, 설계)
    • DB와 상호작용하는 부분
    • 사용자들 눈에 보이는 부분
    • 내부 동작의 논리를 담당하는 부분
      라이브러리는 도구의 모음!
      프레임워크는 목적을 달성하기 위해 이미 설계까지 만들어진 구조!!


  1. MVC, MTV패턴
    디자인 패턴 = 설계의 원칙(앞서 말한 프레임워크의 세가지 부분이 있음)


(1) MVC Model View Controller
Model : DB와 상호작용
View : 사용자 인터페이스 담당
Controller : 웹 서비스 내부 담당(서비스레이어)


(2) MTV
Model Template View
Model : DB와 상호작용
Template : 사용자 인터페이스
View : 웹 서비스 내부 동작의 논리 담당


  1. 가상환경
    독립적인 개발환경 생성 python -m venv 가상환경이름
    가상환경 실행 코드
    source myvenv/Scripts/activate
    가상환경은 저 디렉토리에 저장된 파일로 실행됨


실습 준비

  1. 장고 설치 및 가상환경, 패키지 생성
    (1) 원하는 폴더에서 우클릭 - git bash - code .
    실행하면 vs code 실행됨


(2) python -m venv myvenv
myvenv라는 가상환경 설치


(3) source myvenv/Scripts/activate
가상환경 실행
참고로 명령어 입력 뒤 그 디렉토리에서 m으로 시작하는 유일한 폴더가 myvenv면
m 입력 뒤 tab키를 누르면 자동으로 생성됨
image


(4) 장고 설치
pip install django
image


(5) 설치 상태 확인
pip freeze
image


(6) 장고 프로젝트 생성
django-admin startproject myproject
장고를 사용할 때는 django-admin 명령어 사용
image


(7) 초기생성 파일 역할



application 만듦
python manage.py startapp app이름
생성된 app은 mvc 패턴을 따름
image
생성된 app을 실행하려면 settings.py에 등록해야됨


DB 초기화 및 변경사항 반영
python manage.py migrate

관리자 계정 생성
python manage.py createsuperuser
image


Build paths inside the project like this: BASE_DIR / ‘subdir’.

BASE_DIR = Path(file).resolve().parent.parent

Quick-start development settings - unsuitable for production

See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/

SECURITY WARNING: keep the secret key used in production secret! 해시생성 키

SECRET_KEY = ‘django-insecure-nte-7aly*-lkdqg!$h@71^ssapcwpk7w6%_gwu)l8t9^r$g)z8’

SECURITY WARNING: don’t run with debug turned on in production!

DEBUG = True

DEBUG = True는 서버 실행 때 개발자모드, False 사용자 인터페이스

ALLOWED_HOSTS = []

Application definition

INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘dashboard’ ] # 생성한 application 작성

MIDDLEWARE = [ ‘django.middleware.security.SecurityMiddleware’, ‘django.contrib.sessions.middleware.SessionMiddleware’, ‘django.middleware.common.CommonMiddleware’, ‘django.middleware.csrf.CsrfViewMiddleware’, ‘django.contrib.auth.middleware.AuthenticationMiddleware’, ‘django.contrib.messages.middleware.MessageMiddleware’, ‘django.middleware.clickjacking.XFrameOptionsMiddleware’, ]

ROOT_URLCONF = ‘myproject.urls’

TEMPLATES = [ { ‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’, ‘DIRS’: [], ‘APP_DIRS’: True, ‘OPTIONS’: { ‘context_processors’: [ ‘django.template.context_processors.debug’, ‘django.template.context_processors.request’, ‘django.contrib.auth.context_processors.auth’, ‘django.contrib.messages.context_processors.messages’, ], }, }, ]

WSGI_APPLICATION = ‘myproject.wsgi.application’

Database

https://docs.djangoproject.com/en/4.0/ref/settings/#databases

DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backends.sqlite3’, ‘NAME’: BASE_DIR / ‘db.sqlite3’, } }

Password validation

https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [ { ‘NAME’: ‘django.contrib.auth.password_validation.UserAttributeSimilarityValidator’, }, { ‘NAME’: ‘django.contrib.auth.password_validation.MinimumLengthValidator’, }, { ‘NAME’: ‘django.contrib.auth.password_validation.CommonPasswordValidator’, }, { ‘NAME’: ‘django.contrib.auth.password_validation.NumericPasswordValidator’, }, ]

Internationalization

https://docs.djangoproject.com/en/4.0/topics/i18n/

LANGUAGE_CODE = ‘en-us’

TIME_ZONE = ‘UTC’

USE_I18N = True

USE_TZ = True

Static files (CSS, JavaScript, Images)

https://docs.djangoproject.com/en/4.0/howto/static-files/

STATIC_URL = ‘static/’

Default primary key field type

https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = ‘django.db.models.BigAutoField’

<br>

- urls.py  
각종 url을 관리  

<br>

# 실습 - hello world
(1) application 안에 templates 폴더 생성 뒤 html 파일 생성  
![image](https://user-images.githubusercontent.com/86642180/169716475-a36c4aa7-bab1-4cd7-be0a-a01c8beb4c76.png)  

<br>

(2) settings.py의 installed_apps에 앱 추가  
![image](https://user-images.githubusercontent.com/86642180/169716500-72ec7fd3-510f-426a-a238-349cee4333d3.png)  

<br>

(3) views(controller)에 html 파일 리턴하는 함수 추가  

def home(request): return render(request, ‘index.html’)


<br>

(4) urls.py에 path 추가  

from django.contrib import admin from django.urls import path import dashboard.views

urlpatterns = [ path(‘admin/’, admin.site.urls), path(‘’, dashboard.views.home, name=”hello world”), path(‘url경로명’, 실행원하는 함수 디렉토리, url이름) ] ``` dashboard 앱 폴더 내의 view 임포트 필요!