1) 장고 기본
장고 MVT 디자인 패턴
- View : Http 요청 처리
- Model : 데이터베이스 처리
- Template : 인터페이스 처리
- Form : 입력데이터 처리
장고 실행 순서
- "mysite" 이름을 가진 장고프로젝트 생성
-> cd:\dev>django-admin startproject mysite
- mysite에 myapp을 생성
-> c:\dev\mysite>python manage.py startapp myapp
- myapp 앱을 mysite 프로젝트에 등록
-> 프로젝트/mysite/settings.py/INSTALLED_APPS=['myapp']
- myapp에서 사용할 urls.py 생성
- ~:8000/myapp/하위경로" 요청시 하위경로는 myapp의 urls.py에서 검색하도록 설정
-> settings 모듈의 ROOT_URLCONF = 'mysite.urls'
- mysite를 서비스하는 장고에서 지원하는 웹서버를 시작
-> python manage.py runserver
ORM(Object-Relation Mapping)
- 객체와 관계형 데이터베이스를 연결해주는 것
- 데이터베이스 테이블을 객체와 연결하여 테이블에 CRUD할 때 SQL 없이 가능케 함
- Model를 이용해 데이터베이스의 테이블과 연결하여 사용
마이그레이션
- DB설정 > Model > 마이그레이션 파일 > migrate
- 모델을 가지고 데이터베이스 테이블 생성하는 방법
python manage.py makemigrations blog
python manage.py migrate blog
장고 쉘을 이용한 데이터 추가, 수정, 삭제
python manage.py shell
from blog.models import Post
Post.objects.all()
p1=Post()
p1.name="홍길동"
p1.tel="010-000-000"
p1.save()
Post.objects.get(id=1)
2) 장고 템플릿
- 사용자의 요청에 따른 뷰함수에서 응답하는 HTML 파일, 인터페이스
템플릿 응답
1. render
- 응답
render(HttpRequest,Template,[context])
2. context
- 뷰함수에서 템플릿으로 전달하는 데이터
- 딕셔너리 형태로 데이터 주기
- render 함수에 세번째 인자
템플릿 필터
- {{}} 문법, 가공해서 출력할 수 있도록 필터를 제공
템플릿 상속
- 공통 코드들을 자식부분에서 block해서 처리
부모
{% block 이름 %}
{% endblock %}
자식
{% extends "부모템플릿 경로" %}
3) 장고 Model
관계설정
1. 일대다 관계
2. 일대일 관계
3. 다대다 관계
Post
Get
- 요청정보 헤더에 담겨 전달되는 방식
- 헤더만 전달됨
- 길이제한, 문자열 노출
CSRF
- 요청방식에 따라서 다르게 작업
- GET : 템플릿페이지를 응답하면서 CSRF 토큰 발급
- POST : CSRF 토큰 검사한 fail이면 403응답, form에서 받은 데이터 처리
기능
- get : 입력 페이지 응답 구현
- post : 서비스 처리 응답 구현