프레임워크랑 라이브러리 차이
종속족 vs 자유로움
프레임워크의 구조와 이해
2세대형 : 이거하나있으면 프론트백 다가능하다
템플릿 필요 x
views
로직(컨트롤러)을 다룸
models
장고는 mtv
urls 공간 같은느낌 경로 ㅡㅡㅡ
엔드포인트 api 같은게 만들어야 할것이다.
api는 굳이 페이지는 없어도 입력만하면 로그인 같은거도 되고 이런것임
요청에 따른 데이터 를 주어야하는데 그걸 만들기 위한게 장고
장고에는 orm이 있기때문에 강력하다 .
장고에는 데이터베이스가 있다.
백엔드 의 진로
api 설계와 구현 >>>데이터베이스를 알아야한다. 제일먼저 알아야할것이 웹통신을 하는 http는 무엇인가를 알아야한다.
제일 그리고 요구되는게 aws같은 클라우드 기반의 인프라스트럭쳐를 잘 다루어야한다.
restful, http, api 를 만들게 되는데
이 규칙을 잘알아야함.
규칙이고 약속이다.
REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 필딩은 HTTP의 주요 저자 중 한 사람이다. 이 개념은 네트워킹 문화에 널리 퍼졌다.
엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다.
HTTP. 데이터를 전송하고 받기위해 꼭 잘알아야함. 이거도 통신이고 그래서 데이터의 규격이 있다. http 에는 리퀘스트와 리스폰스가 있다.
이 극명한 두가지가 서로 주고받아야한다. 등가가 이루어져야함.
response (요청에 대한 응답 404 나 not found 등의 오류를 다룬다고 보면됌)
그래서 여기엔 status line 이 존재함. http/1.1 200 ok
500 알수없는 에러….
404 401은 오류라도 핸들링이 가능한데 500은 답도없다.
1.status code를 제어할수 있어야하마.
2.headers 다양한 데이터값이 있다. 쿠키나 인증토큰같은 토큰정보가 여기 있다.
3.body 가장 많이 다루게될 데이터를 여기에 싣는다.
지금은 자바스크립트 기반이 많기떔에 jason을 쓴다 . (json 이란?)
request 는 스타트라인이있고 거긴 메소드가 있다. 메소드가 시작된다 . GET HTTP/1.1
엔드포인트는 urls.py 로 만든다.
http 메소드가 계시한다.
get
post 로는 행위 적 위치가다름
get은 그냥 요청이라 바디가 있음 body는
condo create -n mark01 python3.8
conda activate "mark02"
manage.py 랑 같이있는 test03 파일 이게 중요한거임.
manage.py 는 프로그램 최상위에서 진행하는 실행자임 얘를 기준으로 함 최상위 권한이 매내지.py 에 있음 물리적인. 최상위공간임
setting 이 나 도구들도 다 있기때문에 그거 포함한 test03 이 중요함
wsgi가 있어야 웹서버랑 통신이 가능함 이건 장고에서 았는게 아니라 파이썬으로 웹섭비스 하려먼 필요한거임
비동기 통신을 지원하기 편하려고 만들어진거임 나온지 얼마안됌 .
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))
베이스 dir 이걸 이해하도록하자.
씨크릿키는 장고에서 사용자 로그인이나 회원로그인 페이지 만드러지는 어드민이 자동으로 되서 유명해진건데, 씨크릿키는 향후 바꿔서 싸용됌
디버그는 오류났을떄 설명ㅎ ㅐ주냐 안해주냐고 나중에는 서버운영할떄는 false로 해놔야한다고함.
디버그 트루일떈 경로잘못되면 친절하게 다른 경로를 알려주기때문에 해킹당하기 쉬움. 경로를 친절히 다알려주기떄문에.
정보노출의 위험도 있음 .
상용화 할시에는 false 개발도중엔 true
얼로우드 호스트는 방화벽같은 느낌임 누가 들어오는 지 허용하는 ‘*’ 는 어떤걸 와도 다받아주겠다
아니면 그지역 아이피 지역대만 넣어두던가 그런식으로 제한하면됌
인슬톨드 앱스는
장고에서 프로젝트를 만든다음 여기 추가해줘야함. 생성한 앱이 장고가 알게하려면 여기 추가해놔야함.
csrf 나와다른 애들을 구분하기위해. 하지만 페이지는 다루지않기떄문에 잠깐 주석해두겠다. 근데 우린 데이터만 다룰거라서 지금 겹치는 여러 오류를 위해 꺼두는겅ㅅ임.
인슬톨드 앱에 주석해둔거 주석풀면 그냥 장고유저가 되버리는거임 ,ㅈ 개발자가아니라.
루트 가보면 메인 파일이 적혀있을것이다. 최초 생기느 ㄴ주소는 루트 경로, 거기서부터 시작되는게 바로 test03.urls 왜냐면 이게 처음만들었을때 부터 있떤 url이니까
탬플릿은 페이지 다루는거니까 우린 건들지 않느ㅡㄴ다
wsgi가있어야 서버가 돌아감 웹서버가됌
어플리케잇ㄴ이 하는 일은 장고를 켜서 서버처럼 돌아가게하는거뿐임
18n 타국어 지원 l10n 도
스태틱유알엘은 페이지구현하ㅏㄹ떄 쓰는거라서 우리한테는 의미가없음
빔에서 지우고 싶은 줄있으면 인서트 모드 아닌상태에서 해당줄에 커서 갖다대고 dd
복사는 yy
╰─ cp test03/urls.py account/.
복사
안에파일들 설명읽어보기
include 를 추가해두면 하위경로를 다 연결시키겠다는소리임
DNS 를 통해서 Www.naver.com 같은주소에서 외부적 주소인 10.0.58.1:8000 같은걸로 바꿔주고 여기서 다시 내가보는 내주소는 127.0.0.1 같은 그런거임
네이버주소같은 주소만쓰면 (대외적인것) 8000포트적힌 저기로 바꿔주고(대외적)
장고는 최적의 주소은 / 가 슬래쉬가 자동으로 생김.
그럼 /뒤에. /accout 가 생기는거임 그래서. blog/ 처럼 뒷주소도
주소뒤에 / 안치는게 법칙임 슬래쉬가 의미하는건 그다음상위를 뜻하기때문에, 우리는 지금 우리 목적지를 타게팅해야되는데 슬래쉬잇으면 다음에 뭔가 있는것이 되기떄문에 스랠쉬를 지금 안쓴것
결론 뒤ㅇ[ 슬래쉬 있으면 의미전달이 잘못될수가 있다.
문자열에 따라 주소가 갖춰지니까 앞으로 주소를 작성할때 조심해야됌 이건 따로 다시 / 에대해서 공부를 해보도록하자. 듀토리얼되로는 하면안됌
내가 전달한 스트링을 어떻게 전달하냐에따라 주소가 결정되기때문에 규칙을 잘지키는것이 중요함 RESTFUL 참조
앱의 url을 처리할때는 앞에 / 붙여준다
migrate 란?
코딩컨벤션
클래스명은 단수 테이블에 주는 이름은 복수
테이블에 들어가는 이름만 복수
Account.objects.all()
<QuerySet []>
Account.objects.create(name='이시환', password='1234')
<Account: Account object (1)>
Account.objects.all()
<QuerySet [<Account: Account object (1)>]>
Account(name='tony', password='1234').save(). <<< 저장하는 다른방식
키에 접근할떄 닷써야함 닷은 점임
<Account: Account object (1)>
a[0].name
'이시환'
b[0]['name']
'이시환'객체면 닷노테이션. 딕셔너리는 브라켓노테이션
<QuerySet [<Account: Account object (1)>, <Account: Account object (2)>, <Account: Account object (3)>]>
a = Account.objects.all()
a.first()
<Account: Account object (1)>
a.last()
<Account: Account object (3)>
a. 면 다되는거 나옴
마이그레이션이나 쉘에서 정보 넣고뺴는거 빨리 눈감고도 할수있게
듀터리얼도 쉘이랑 모델 많이보기