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

More Related Content

What's hot

[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Joonsung Lee
 
티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법Young D
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장sung ki choi
 
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기Changwan Jun
 
Groovy 시작 입문
Groovy 시작 입문Groovy 시작 입문
Groovy 시작 입문라한사 아
 
[스프링 캠프 2014] 내가 파이썬을 선택한 이유
[스프링 캠프 2014] 내가 파이썬을 선택한 이유[스프링 캠프 2014] 내가 파이썬을 선택한 이유
[스프링 캠프 2014] 내가 파이썬을 선택한 이유Yunseok Choi
 
휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치Juneyoung Oh
 
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터YunWon Jeong
 
Python Recipes for django girls seoul
Python Recipes for django girls seoulPython Recipes for django girls seoul
Python Recipes for django girls seoulJoeun Park
 
파이썬(Python) 소개
파이썬(Python) 소개파이썬(Python) 소개
파이썬(Python) 소개Jin wook
 
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)Taeung Song
 
파알못의 파이썬 크롤러 이해하기
파알못의 파이썬 크롤러 이해하기파알못의 파이썬 크롤러 이해하기
파알못의 파이썬 크롤러 이해하기Hyeyeon Yang
 
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기CONNECT FOUNDATION
 
도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택Jc Kim
 
Git의 개념과 사용
Git의 개념과 사용Git의 개념과 사용
Git의 개념과 사용환민 홍
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt덕규 임
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작Changwon Choe
 
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기CONNECT FOUNDATION
 

What's hot (20)

[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기
 
티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장
 
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기
 
Groovy 시작 입문
Groovy 시작 입문Groovy 시작 입문
Groovy 시작 입문
 
[스프링 캠프 2014] 내가 파이썬을 선택한 이유
[스프링 캠프 2014] 내가 파이썬을 선택한 이유[스프링 캠프 2014] 내가 파이썬을 선택한 이유
[스프링 캠프 2014] 내가 파이썬을 선택한 이유
 
휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치
 
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
 
Python Recipes for django girls seoul
Python Recipes for django girls seoulPython Recipes for django girls seoul
Python Recipes for django girls seoul
 
파이썬(Python) 소개
파이썬(Python) 소개파이썬(Python) 소개
파이썬(Python) 소개
 
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
 
파알못의 파이썬 크롤러 이해하기
파알못의 파이썬 크롤러 이해하기파알못의 파이썬 크롤러 이해하기
파알못의 파이썬 크롤러 이해하기
 
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
 
도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택도도와 파이썬: 좋은 선택과 나쁜 선택
도도와 파이썬: 좋은 선택과 나쁜 선택
 
Git의 개념과 사용
Git의 개념과 사용Git의 개념과 사용
Git의 개념과 사용
 
17 1 람다함수
17 1 람다함수17 1 람다함수
17 1 람다함수
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
 
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
 

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

FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발현승 배
 
EMOCON 2015 - 카피캣으로 시작하는 오픈소스
EMOCON 2015 - 카피캣으로 시작하는 오픈소스EMOCON 2015 - 카피캣으로 시작하는 오픈소스
EMOCON 2015 - 카피캣으로 시작하는 오픈소스이상한모임
 
카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 SeongHyun Ahn
 
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링Ted Won
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-toJi-Woong Choi
 
Python codelab1
Python codelab1Python codelab1
Python codelab1건희 김
 
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장MinPa Lee
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdfHeeJung Chae
 
[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)Sang Don Kim
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung kyoo Park
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debuggingJongwon Han
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
2Naver Open Android API Translation At DCamp
2Naver Open Android API Translation At DCamp2Naver Open Android API Translation At DCamp
2Naver Open Android API Translation At DCampJeikei Park
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 iFunFactory Inc.
 
쉽게 쓰여진 Django
쉽게 쓰여진 Django쉽게 쓰여진 Django
쉽게 쓰여진 DjangoTaehoon Kim
 
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기Hyperledger Korea User Group
 

Similar to Django로 배우는 쉽고 빠른 웹개발 study 자료 (20)

FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
EMOCON 2015 - 카피캣으로 시작하는 오픈소스
EMOCON 2015 - 카피캣으로 시작하는 오픈소스EMOCON 2015 - 카피캣으로 시작하는 오픈소스
EMOCON 2015 - 카피캣으로 시작하는 오픈소스
 
카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스
 
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to
 
Python codelab1
Python codelab1Python codelab1
Python codelab1
 
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf
 
kt-cloud
kt-cloudkt-cloud
kt-cloud
 
[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
2Naver Open Android API Translation At DCamp
2Naver Open Android API Translation At DCamp2Naver Open Android API Translation At DCamp
2Naver Open Android API Translation At DCamp
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
쉽게 쓰여진 Django
쉽게 쓰여진 Django쉽게 쓰여진 Django
쉽게 쓰여진 Django
 
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
 

More from Han Sung Kim

파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차Han Sung Kim
 
AWS lambda, step function, cloud watch
AWS lambda, step function, cloud watchAWS lambda, step function, cloud watch
AWS lambda, step function, cloud watchHan Sung Kim
 
구름 어디까지 써봤니
구름 어디까지 써봤니구름 어디까지 써봤니
구름 어디까지 써봤니Han Sung Kim
 
2016년 유니톤 언더라인 발표자료
2016년 유니톤 언더라인 발표자료2016년 유니톤 언더라인 발표자료
2016년 유니톤 언더라인 발표자료Han Sung Kim
 
외주 - 시작은 노예였으나 끝은 그래도 노예이니라
외주 - 시작은 노예였으나 끝은 그래도 노예이니라외주 - 시작은 노예였으나 끝은 그래도 노예이니라
외주 - 시작은 노예였으나 끝은 그래도 노예이니라Han Sung Kim
 
모바일 해커톤 사전교육 4일차
모바일 해커톤 사전교육 4일차모바일 해커톤 사전교육 4일차
모바일 해커톤 사전교육 4일차Han Sung Kim
 
모바일 해커톤 사전교육 3일차
모바일 해커톤 사전교육 3일차모바일 해커톤 사전교육 3일차
모바일 해커톤 사전교육 3일차Han Sung Kim
 
모바일 해커톤 사전교육 2일차
모바일 해커톤 사전교육 2일차모바일 해커톤 사전교육 2일차
모바일 해커톤 사전교육 2일차Han Sung Kim
 
모바일 해커톤 사전교육 1일차
모바일 해커톤 사전교육 1일차모바일 해커톤 사전교육 1일차
모바일 해커톤 사전교육 1일차Han Sung Kim
 
Uching - 2016 한양대 스마트 창작터
Uching - 2016 한양대 스마트 창작터Uching - 2016 한양대 스마트 창작터
Uching - 2016 한양대 스마트 창작터Han Sung Kim
 
코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다Han Sung Kim
 

More from Han Sung Kim (20)

파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
AWS RDS, DYNAMO
AWS RDS, DYNAMOAWS RDS, DYNAMO
AWS RDS, DYNAMO
 
AWS lambda, step function, cloud watch
AWS lambda, step function, cloud watchAWS lambda, step function, cloud watch
AWS lambda, step function, cloud watch
 
AWS-IAM,S3,EC2
AWS-IAM,S3,EC2AWS-IAM,S3,EC2
AWS-IAM,S3,EC2
 
AWS 약쟁이
AWS 약쟁이AWS 약쟁이
AWS 약쟁이
 
구름 어디까지 써봤니
구름 어디까지 써봤니구름 어디까지 써봤니
구름 어디까지 써봤니
 
블록체인
블록체인블록체인
블록체인
 
2016년 유니톤 언더라인 발표자료
2016년 유니톤 언더라인 발표자료2016년 유니톤 언더라인 발표자료
2016년 유니톤 언더라인 발표자료
 
OMS - Start up
OMS - Start upOMS - Start up
OMS - Start up
 
Web is 뭔들
Web is 뭔들Web is 뭔들
Web is 뭔들
 
외주 - 시작은 노예였으나 끝은 그래도 노예이니라
외주 - 시작은 노예였으나 끝은 그래도 노예이니라외주 - 시작은 노예였으나 끝은 그래도 노예이니라
외주 - 시작은 노예였으나 끝은 그래도 노예이니라
 
모바일 해커톤 사전교육 4일차
모바일 해커톤 사전교육 4일차모바일 해커톤 사전교육 4일차
모바일 해커톤 사전교육 4일차
 
모바일 해커톤 사전교육 3일차
모바일 해커톤 사전교육 3일차모바일 해커톤 사전교육 3일차
모바일 해커톤 사전교육 3일차
 
모바일 해커톤 사전교육 2일차
모바일 해커톤 사전교육 2일차모바일 해커톤 사전교육 2일차
모바일 해커톤 사전교육 2일차
 
모바일 해커톤 사전교육 1일차
모바일 해커톤 사전교육 1일차모바일 해커톤 사전교육 1일차
모바일 해커톤 사전교육 1일차
 
Uching - 2016 한양대 스마트 창작터
Uching - 2016 한양대 스마트 창작터Uching - 2016 한양대 스마트 창작터
Uching - 2016 한양대 스마트 창작터
 
I see u
I see uI see u
I see u
 
라인전
라인전라인전
라인전
 
심리전
심리전심리전
심리전
 
코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다
 

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

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