1
Django Chater 2파이썬 웹 표준 라이브러리
2
Source Code• Github
https://github.com/gnidoc327/django_web_dev_chater_2
3
시작 전 확인• 버전 확인 : cmd 창에서 python –V 으로 확인• 여러가지 버전을 사용해야한다 ?
( 공부는 3.5 로 하지만 회사에선 3.6 을 써야할 경우 )• Pycharm 에서 인터프리터 설정시 Virtualenv( 가상환경변수 ) 를 사용• Mac/ 리눅스 : 설치시 대부분 자동으로 구별
(python3.5 와 python3.6 으로 버전별로 실행 가능함• 윈도우 : 그냥 설치하면 구별이 안되며 따로 Script path 를 잡아야 함
(py -3.5, py -3.6)
4
시작 전 확인 ( 윈도우 유저 )• Cmd 창에서 python35, python36 사용법• 모든 python.exe, python\script path 를 환경변수로 등록해주고• python.exe 이름을 바꿔주면 됨
• Python35.exe python36.exe
5
2 장에서는• 라이브러리 , 프레임워크 , 플랫폼 차이점• 표준 라이브러리 ( 모듈 )
- 2.x 와 3.x 차이점- 웹 클라이언트 라이브러리- 웹 서버 라이브러리
• 상용 웹 서버와의 연동- CGI- WSGI
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
7
웹 라이브러리의 구성• urllib – 클라이언트• http – 서버 , 클라이언트• cookie, server 는 사용 X• 대신 Django 웹 프레임워크사용
• Django – 웹 프레임워크
8
python 버전에 따른 차이점
9
웹 클라이언트 라이브러리• 웹 서버에 요청을 보내는 애플리케이션 = 웹 클라이언트• ex) 웹 브라우저 , 어플 ( 네이버 , 다음 )
10
서버가 없는데 뭘로 연습해야 하는가 ?• http://www.example.com• 교재 예제 사이트• 일부 내용은 안됩니다 .( 코드내 주석 참고 )
• Naver API 를 사용합니다 .• https://developers.naver.com/main/• Application – 애플리케이션 등록 – 나머지 잘 입력 후 등록• client ID, Secret 를 config.py 에 입력 ( 코드내 주석 참고 )• 딱 1 번 밖에 안써서 굳이 하실 필요는 없습니다 ㅎㅎ
11
urllib.urlparse
• src – client – urllib_ex – [urlparse35.py]• URL 을 parsing 하여 ParseResult 로 반환• 자세한 내용은 주석 참고
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 사용• 인증 , 쿠키 , 프록시 등의 경우 : 해당 핸들러 클래스를 같이 사용
13
image parser(urlopen 응용 )• src – client – urllib_ex – [parse_image.py]
• 특정 url 의 이미지를 검색해서 리스트를 보여주는 코드
14
httplib – GET, HEAD, POST, PUT• urllib 에서 제공되는 방식이외의 요청을 보낼 경우에 사용
• GET, POST 를 제외한 요청방식 (PUT, DELETE 등 )• 헤더와 바디 사이에 타이머를 두어 시간을 지연시키는 경우
• src – client – httplib_ex – httplib35.py
• 코딩 순서• 연결 객체 생성• 요청 보냄• 응답 객체 생성• 응답 데이터를 읽음• 연결을 닫음
15
httplib – image download• src – client – httplib_ex – [download_image.py]
• image parser 을 사용하여 image 를 골라내서 다운로드
16
웹서버 라이브러리• 웹 프로그래밍 – 클라이언트 = 브라우저• 웹 프로그래밍 – 서버 = 라이브러리 X, 프레임워크 O
17
웹서버 모듈 ( 라이브러리 )• BaseHTTPServer• HTTP 처리
• SimpleHTTPServer• GET ,HEAD 메소드 처리 가능
• CGIHTTPServer• POST 와 CGI 처리 가능
18
BaseHTTPServer• src – server – [hello_world.py]
• python –m (m 옵션 )• python test.py : 특정 파일만 컴파일• python –m http.server : 특정 디렉토리를 컴파일
19
SimpleHTTPServer• src – server – [simple_http_server.py]
• SimpleHTTPRequestHandler• do_GET• do_HEAD
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 로 실행하면 똑같이 나옴
21
xxxHTTPServer 모듈 간의 관계
22
2.4 CGI• CGI(Common Gateway Interface)• 서버와 어플리케이션을 연결해주는 규격
23
CGI 의 문제점 ?• 짧은 시간에 수천 , 수만 건의 요청을 받는 경우서버의 부하가 높아짐• Fast CGI, 쓰레드 , 외부 데몬 프로세스 등으로 해결• 이런 고민 필요 없이 Django 를 사용합시다 !
24
2.4 WSGI• WSGI(Web Server Gateway Interface)• 웹서버와 웹 애플리케이션을 연결해주는 규격
25
WSGI 의 동작방식 및 장점 ?• 웹서버와 독립적인 웹 어플리케이션을 만들 수 있다 .
• src – server – [wsgi_server.py]2.7 에서만 잘 돌아갑니다• WSGI 서버도 결국 웹 서버
(HTTPServer 로 객체를 생성 )
26
결론• 사실 2 단원을 볼 필요가 없었다• 왜냐면 우린 Django 를 쓰기 때문 !• ㅜㅜ• client 에선 urlopen 말고 Requests 씁시다 !
27
끝
Top Related