Django로 배우는 쉽고 빠른 웹개발 study 자료

27
Django Chater 2 파파파 파 파파 파파파파파 1

Transcript of Django로 배우는 쉽고 빠른 웹개발 study 자료

Page 1: Django로 배우는 쉽고 빠른 웹개발 study 자료

1

Django Chater 2파이썬 웹 표준 라이브러리

Page 2: Django로 배우는 쉽고 빠른 웹개발 study 자료

2

Source Code• Github

https://github.com/gnidoc327/django_web_dev_chater_2

Page 3: Django로 배우는 쉽고 빠른 웹개발 study 자료

3

시작 전 확인• 버전 확인 : cmd 창에서 python –V 으로 확인• 여러가지 버전을 사용해야한다 ?

( 공부는 3.5 로 하지만 회사에선 3.6 을 써야할 경우 )• Pycharm 에서 인터프리터 설정시 Virtualenv( 가상환경변수 ) 를 사용• Mac/ 리눅스 : 설치시 대부분 자동으로 구별

(python3.5 와 python3.6 으로 버전별로 실행 가능함• 윈도우 : 그냥 설치하면 구별이 안되며 따로 Script path 를 잡아야 함

(py -3.5, py -3.6)

Page 4: Django로 배우는 쉽고 빠른 웹개발 study 자료

4

시작 전 확인 ( 윈도우 유저 )• Cmd 창에서 python35, python36 사용법• 모든 python.exe, python\script path 를 환경변수로 등록해주고• python.exe 이름을 바꿔주면 됨

• Python35.exe python36.exe

Page 5: Django로 배우는 쉽고 빠른 웹개발 study 자료

5

2 장에서는• 라이브러리 , 프레임워크 , 플랫폼 차이점• 표준 라이브러리 ( 모듈 )

- 2.x 와 3.x 차이점- 웹 클라이언트 라이브러리- 웹 서버 라이브러리

• 상용 웹 서버와의 연동- CGI- WSGI

Page 6: Django로 배우는 쉽고 빠른 웹개발 study 자료

6

플랫폼 vs 프레임워크 vs 라이브러리• 플랫폼 : 어플리케이션을 동작 시킬 때 기반이 되는 OS 와 그 밖의 환경 , 설정

• J2EE (Java 2 Platform for enterprise Edition) – 5 부터 Java EE 5• 윈도우 7, 8, 10 / IOS 10 / Ubuntu

• 프레임 워크 : 일반적인 기능을 가진 코드를 유저가 선택적으로 덮어쓰거나 특화한 것• Spring(Java)• Flask, Django(Python)

• 라이브러리 : 클래스나 서브루틴의 모임 . 대상 플랫폼에서 바로 실행됨• http, urllib

Page 7: Django로 배우는 쉽고 빠른 웹개발 study 자료

7

웹 라이브러리의 구성• urllib – 클라이언트• http – 서버 , 클라이언트• cookie, server 는 사용 X• 대신 Django 웹 프레임워크사용

• Django – 웹 프레임워크

Page 8: Django로 배우는 쉽고 빠른 웹개발 study 자료

8

python 버전에 따른 차이점

Page 9: Django로 배우는 쉽고 빠른 웹개발 study 자료

9

웹 클라이언트 라이브러리• 웹 서버에 요청을 보내는 애플리케이션 = 웹 클라이언트• ex) 웹 브라우저 , 어플 ( 네이버 , 다음 )

Page 10: Django로 배우는 쉽고 빠른 웹개발 study 자료

10

서버가 없는데 뭘로 연습해야 하는가 ?• http://www.example.com• 교재 예제 사이트• 일부 내용은 안됩니다 .( 코드내 주석 참고 )

• Naver API 를 사용합니다 .• https://developers.naver.com/main/• Application – 애플리케이션 등록 – 나머지 잘 입력 후 등록• client ID, Secret 를 config.py 에 입력 ( 코드내 주석 참고 )• 딱 1 번 밖에 안써서 굳이 하실 필요는 없습니다 ㅎㅎ

Page 11: Django로 배우는 쉽고 빠른 웹개발 study 자료

11

urllib.urlparse

• src – client – urllib_ex – [urlparse35.py]• URL 을 parsing 하여 ParseResult 로 반환• 자세한 내용은 주석 참고

Page 12: Django로 배우는 쉽고 빠른 웹개발 study 자료

12

urllib.urlopen – GET, POST• src – client – urllib_ex – [urlopen35.py, request35.py

auth35.py, cookie35.py, proxy35.py]

• default format = urlopen(url, data=None, [timeout])• url(“http://www.naver.com”) - GET• url(http://www.example.com, data=“query=python”) - POST

• GET, POST 요청만 처리 가능• 헤더 추가 / 변경이 필요한 경우 : Request class 사용• 인증 , 쿠키 , 프록시 등의 경우 : 해당 핸들러 클래스를 같이 사용

Page 13: Django로 배우는 쉽고 빠른 웹개발 study 자료

13

image parser(urlopen 응용 )• src – client – urllib_ex – [parse_image.py]

• 특정 url 의 이미지를 검색해서 리스트를 보여주는 코드

Page 14: Django로 배우는 쉽고 빠른 웹개발 study 자료

14

httplib – GET, HEAD, POST, PUT• urllib 에서 제공되는 방식이외의 요청을 보낼 경우에 사용

• GET, POST 를 제외한 요청방식 (PUT, DELETE 등 )• 헤더와 바디 사이에 타이머를 두어 시간을 지연시키는 경우

• src – client – httplib_ex – httplib35.py

• 코딩 순서• 연결 객체 생성• 요청 보냄• 응답 객체 생성• 응답 데이터를 읽음• 연결을 닫음

Page 15: Django로 배우는 쉽고 빠른 웹개발 study 자료

15

httplib – image download• src – client – httplib_ex – [download_image.py]

• image parser 을 사용하여 image 를 골라내서 다운로드

Page 16: Django로 배우는 쉽고 빠른 웹개발 study 자료

16

웹서버 라이브러리• 웹 프로그래밍 – 클라이언트 = 브라우저• 웹 프로그래밍 – 서버 = 라이브러리 X, 프레임워크 O

Page 17: Django로 배우는 쉽고 빠른 웹개발 study 자료

17

웹서버 모듈 ( 라이브러리 )• BaseHTTPServer• HTTP 처리

• SimpleHTTPServer• GET ,HEAD 메소드 처리 가능

• CGIHTTPServer• POST 와 CGI 처리 가능

Page 18: Django로 배우는 쉽고 빠른 웹개발 study 자료

18

BaseHTTPServer• src – server – [hello_world.py]

• python –m (m 옵션 )• python test.py : 특정 파일만 컴파일• python –m http.server : 특정 디렉토리를 컴파일

Page 19: Django로 배우는 쉽고 빠른 웹개발 study 자료

19

SimpleHTTPServer• src – server – [simple_http_server.py]

• SimpleHTTPRequestHandler• do_GET• do_HEAD

Page 20: Django로 배우는 쉽고 빠른 웹개발 study 자료

20

CGIHTTPServer• src – server – [cgi_http_server.py] // 서버 ( 라우터 ) 실행• src – server – [cgi-bin] – [script.py] // 요청시 실행되는 스크립트• src – client – cgi_http_server_client – [cgi_client.py]

• CGIHTTPRequestHandler• do_POST

• 주의 : 책처럼 결과가 안나옵니다 .• python 2.7 로 실행하면 똑같이 나옴

Page 21: Django로 배우는 쉽고 빠른 웹개발 study 자료

21

xxxHTTPServer 모듈 간의 관계

Page 22: Django로 배우는 쉽고 빠른 웹개발 study 자료

22

2.4 CGI• CGI(Common Gateway Interface)• 서버와 어플리케이션을 연결해주는 규격

Page 23: Django로 배우는 쉽고 빠른 웹개발 study 자료

23

CGI 의 문제점 ?• 짧은 시간에 수천 , 수만 건의 요청을 받는 경우서버의 부하가 높아짐• Fast CGI, 쓰레드 , 외부 데몬 프로세스 등으로 해결• 이런 고민 필요 없이 Django 를 사용합시다 !

Page 24: Django로 배우는 쉽고 빠른 웹개발 study 자료

24

2.4 WSGI• WSGI(Web Server Gateway Interface)• 웹서버와 웹 애플리케이션을 연결해주는 규격

Page 25: Django로 배우는 쉽고 빠른 웹개발 study 자료

25

WSGI 의 동작방식 및 장점 ?• 웹서버와 독립적인 웹 어플리케이션을 만들 수 있다 .

• src – server – [wsgi_server.py]2.7 에서만 잘 돌아갑니다• WSGI 서버도 결국 웹 서버

(HTTPServer 로 객체를 생성 )

Page 26: Django로 배우는 쉽고 빠른 웹개발 study 자료

26

결론• 사실 2 단원을 볼 필요가 없었다• 왜냐면 우린 Django 를 쓰기 때문 !• ㅜㅜ• client 에선 urlopen 말고 Requests 씁시다 !

Page 27: Django로 배우는 쉽고 빠른 웹개발 study 자료

27