장고 프로젝트 기반지식!

춤추는망고·2020년 4월 18일
0

이 글은 아직 수정하기 전이에요!

템플릿태그 : {% 파이썬코드 %} {{ 내용 }}

manage.py 와 같은 디렉토리에 있는 디렉토리만 프로젝트명과 일치하면 됨.

WSGI -> Web Server Gateway Interface : 웹서버 구동 환경
ASGI -> Asynchronous Server Gateway Interface : 비동기적 서버 구동 환경
( 장고 3. 버젼 이후 추가 / 기존에 다른 프로그램의 힘을 받다가, 독립적 활용을 위해 등장 )

POST 방식에서는 request.body 에 정보값이 담김
GET 방식에서는 url 호출값에 내용이 담겨서 request.GET 에 정보값이 담김

try except 구문대신 .get 메소드 사용 가능

기본적으로, runserver 명령은 내부 IP 의 8000 번 포트로 서버구동
-> 서버의 포트를 변경하고 싶다면, 커맨드라인에서 인수를 전달

프로젝트 폴더는 프로젝트에 큰 영향을 주는 변화 외에는 크게 조작 x

지정정보 ( 참조받아올 ) . 관계키 . add ( 참조시킬값 )

select_related( ' 관계 테이블 1 ' , ' 관계 테이블 2 ' ) => 정참조 o2o
prefetch_related( ' 관계 테이블 1 ' , ' 관계 테이블 2 ' ) => 역참조 o2m, m2m

메인 데이터 테이블의 key 에 맞춰 서브 데이터 테이블에서 저장하는 관계 vs 메인 데이터 테이블에서 foreign key 로 서브 데이터 테이블의 정보값을 가져오는 관계

models 의 타입들!

CharField => VARCHAR ( max_length 속성 필요! ) / text input 요소
BooleanField => checkbox 요소 등
DateField => 날짜데이터, 달력위젯 / 오늘 기능 있음
DateTimeField => 날싸+시간까지, 달력위젯 / 오늘 기능 있음
FloatField => float 형 데이터 / decimal 보다 더 정밀한 수치가 필요할 때 사용쓰!
DecimalField => 10진법식 표기 숫자데이터
IntegerField => int 데이터
TextField => 텍스트 데이터 ( 길이상관 X )
ForeignKey ( 클래스, on_delete = ' 속성값 ' ) => 클래스에 ''가 있느냐 없느냐 ( 있으면 예약적 실행 )
OneToOneField => o2o 관계 정의
ManyToManyField => m2m 관계 정의

속성

CASCADE : 상태를 상속받음
SET_NULL : 저장 데이터는 유지, 상속관계 key 값만 NULL 설정
null = true
null 이라는 데이터 타입에 대한 허용
blank=true
해당 속성을 지닌 column 의 필드들에 대한 공란 허용

엔드포인트 구성의 순서!
1. 우선적으로 DB 생성 ( models.py )
app/models.py 에 테이블 구성 ( 클래스명 : 테이블명(models.Model), 좌항 : column, 우항 : row (models.datatype(attribute))
테이블 구성 끝나면 makemigrations 하고, migrate 해서 DB에 실제 테이블 생성
app/admin.py 에서 from .model import 테이블명 해야 어드민에 설정됨

2. 로직 구성 ( views 에서 )

3. 로직 참조 지정 ( urls 에서 )

장고 ORM은 필드 이름("title")과 연산자과 필터("contains")를 밑줄 2개(__)를 사용해 구분

쿼리셋 / QuerySet ?
-> 파이썬에는 없는 장고만의 데이터형태 / db 테이블
record = 테이블의 한 row 덩어리

render()
-> 매개변수 request ( 사용자가 요청하는 모든 것 ) 와 'blog/post_list.html' 템플릿이 있습니다. {} 템플릿을 사용하기 위해 매개변수를 추가

makemigrations 를 하거나 migrate 를 할때 따로 값을 지정해줘야함

테이블 병합 시 참조 시점의 문제로 충돌이 일어날 수도 있음 -> migration 이 꼬였다 고 표현함

migrate 명령

모델의 상태에 맞게 DB 를 롤링

" settings.py 파일의 installed_apps 의 설정 "을 보고,

" settings.py 파일에 설정된 db 값 / app에 의해 제공된 db migration " 에 맞춰 필요한 db table 을 생성

매 마이그레이션마다 적용내용 관련 메세지 출력

무거운 프로세스를 원하지 않으면, settings.py 파일의 installed_apps 에서 불필요한 구성요소에 대해서 주석처리 해도 됨.

migrations 디렉토리 -> models.py 파일에 정의한 테이블 구조를 manage.py 의 makemigrations 옵션을 통해 생성되는 파일이 저장되는 디렉토리 입니다.

templates
이 설정은 Django 가 template 을 어떻게 불러오고, 렌더링할 지 정해줌.
기본설정은 APP_DIRS 가 True 값을 가진 장고템플릿츠 백엔드를 구성함.
INSTALLED_APPS 의 각 요소마다 " templates " 라는 장고템플릿을 찾음

ORM 이란 / omr 아님

Object Relational Mapping ( 관계형 객체 맵핑 )
	관계형 DB 데이터와 객체를 연결
	객체지향이 클래스라면, ORM 방향은 DB 테이블
	객체 모델과 관계형 모델 사이에 불일치 존재
	 -> ORM 을 이용해 객체간 관계를 바탕으로 SQL 을 자동생성하여 해결

	DB 데이터 <---> Object 필드
	객체를 통해 간접적으로 DB 데이터를 다룬다.

python shell 에서 manage.py 를 다룰때
( db 테이블과 관련해서 테스트를 할 때 자주 사용할 환경 )

테이블 호출 객체 . objects .create ( 입력정보 )
테이블 호출 객체 ( 입력정보 ) .save

두가지로 값 추가 가능

테이블 호출 객체 . objects . all 로 전체 / get 으로 지정한 하나의 항목 / filter 로 지정한 속성을 지닌 여러값 을 추출 가능
-> 객체로 반환됨
values 로 호출하면 딕셔너리로 반환됨

추출된 정보값 . ( column 값 ) 으로 안에서 매칭된 row 값 출력 가능

호출해서 지정한 정보값 . delete() -> 삭제

호출해서 지정한 정보값 . update() -> 수정

views 로직 구성할때 기본

import json

from django.views import View
from django.http import HttpResponse, JsonResponse

import .models import db클래스

profile
지금까지 이런 망고는 없었다. 이것은 개발자인가 춤추는망고인가

0개의 댓글