SlideShare a Scribd company logo
1 of 34
Download to read offline
Python
Code Lab
Study Of Landvibe
made by 김건희
Django 프레임워크를
활용한 웹페이지 제작
Outline
• 1주차
• 프로그램 개요, 데모 시연
• 배경 지식 설명
• 환경 설정
• 2주차
• Django - Model, View ,Template, url
• 사진 조회, 삽입, 삭제, 수정
• 3주차
• 검증(form)
• 로그인, 회원가입, 로그아웃
• 유저와 사진 연결하기
Outline
• 2주차
• Django - Model, View ,Template, url
• 사진 조회, 삽입, 삭제, 수정
Django
Django의 MTV 패턴
• Template
• View 역할
• 사용자의 화면에 보
이는 부분
• View
• Controller 역할
• 사용자의 요청을 처
리하여 응답해주는
부분
• Model
• Model 역할
• 서버와 DB를 연결해
주는 부분
Model
• DB에 접속하여 data를 조회(select), 입력(insert), 수정
(update), 삭제(delete)하는 작업을 하는 모듈(model.py)
• django.db.models.Model 클래스를 상속
Model
예제
Model
Field
• Field (공통 속성)
• null : db값의 null을 허용할지 (Boolean)
• blank : admin 에서 empty input value 허용할지
(Boolean)
• default : default value
• help_text : admin 에서 해당 필드 설명 text
• unique : value가 uniqu한지 (Boolean)
• TextField
• max_length : 최대 길이
• DateTimeField
• auto_now : 수정될 때
• auto_now_add : 처음 생성될 때
Model
Field
• ImageField
• uploaded_to : 저장경로 설정
• height_field, width_field : 높이, 너비 지정
• ForeignKey
• 첫번째 인자 : 참조될 Model이름
• on_delete : 삭제 시 동작 방식
https://docs.djangoproject.com/en/1.10/ref/models/fields/
Model
• Python manage.py makemigrations
• Python manage.py migrate
• 기본적인 DB 설정이 끝났으니 다음단계로 넘어갑시다
View
• HTTP request에 대한 처리를 하는 모듈(view.py)
• Client와의 gate(Route)로 urls.py 모듈을 사용
• 실질적인 기능이 구현 되는 곳
View
기능을 추가해봅시다!
1. Photo들의 리스트를 출력
URL : localhost:8000/photos
View
• urls.py
View
• View.py
ORM
Object Relational Mapping
• Wiki : 데이터베이스와 객체 지향 프로그래밍 언어 간의
호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.
QuerySet
Select Query
• get(**kwargs)
• Parameter와 일치하는 한 개의 object 리턴
• kwargs에 unique value
• 2개이상일 경우 MultipleObjectReturned 예외 발생
• 일치 값이 없을 경우 DoesNotExist 예외 발생
• all()
• 모든 object를 리턴
• filter(** kwargs)
• Parameter와 일치하는 여러 개의 object 리턴
https://docs.djangoproject.com/en/1.10/ref/models/querysets/
QuerySet
Insert Query
• create(**kwargs)
• Parameter에 지정된 값으로 생성된 object를
database에 저장
• save()
• 생성된 object를 database에 저장
https://docs.djangoproject.com/en/1.10/ref/models/querysets/
QuerySet
Update, Delete Query
• update(**kwargs)
• Parameter에 지정된 값으로 database값 수정
• delete()
• Object를 datase에서 삭제
View
기능을 추가해봅시다!
2. Photo 추가
View
• urls.py
• 여긴 그대로
View
• View.py
• 기존 photo_list 함수에 아래 코드를 추가
HTTP
Request
• Client가 보낸 http 요청을 request object로 저장
• method
• GET, POST, PUT, DELETE, …
• GET
• GET 요청의 parameter들이 dict로 저장
• POST
• POST 요청의 parameter들이 dict로 저장
• FILES
• 클라이언트에서 보낸 파일 저장
HTTP
Response
• Server에서 Client에 data를 전송
• HttpResponse
• Client로 Response를 보내는 객체
• HttpResponseRedirect(url)
• Client로 url에 해당하는 HttpResponse를 전송
• render
• html 파일과 data를 HttpResponse 객체에 담아서 전
송
• redirect
• HttpResponseRedirect 객체에 url을 담아서 전송
View
기능을 추가해봅시다!
3. Photo 수정
3-1.
• 수정하기 버튼
클릭
• /photos
3-2.
• /photos/<id>
• photo객체 한
개 불러옴
3-3.
• photo db 수정
• /photos 로 redirect
View
• url.py
• View.py
• Photo 객체 하나를 database
에서 가져옴
• update.html과 photo 객체
response
View
3-1.
• 수정하기 버튼
클릭
• /photos
3-2.
• /photos/<id>
• photo객체 한
개 불러옴
여기까지 확인!
View
• View.py
• 기존 photo_detail 함수 아래에 코드 추가
View
잘 돌아가는지 Test 해봅시다
3. Photo 수정
3-1.
• 수정하기 버튼
클릭
• /photos
3-2.
• /photos/<id>
• photo객체 한
개 불러옴
3-3.
• photo db 수정
• /photos 로 redirect
View
기능을 추가해봅시다!
4. Photo 삭제
4-1.
• 삭제 버튼 클릭
• /photos
4-2.
• /photos/<id>로 접근
• Photo 객체 db에서 삭제
• 저장된 image 삭제
• /photos로 redirect
View
• View.py
• 기존 photo_detail 함수 아래에 코드 추가
View
잘 돌아가는지 Test 해봅시다
4. Photo 삭제
4-1.
• 삭제 버튼 클릭
• /photos
4-2.
• /photos/<id>로 접근
• Photo 객체 db에서 삭제
• 저장된 image 삭제
• /photos로 redirect
View
잘 돌아가는지 Test 해봅시다
잠깐! DB에서는 지웠는데 image 파일은 안지웠잖아요!!!
View
잘 돌아가는지 Test 해봅시다
Model의 delete함수를
overriding 해줍시다!
View
잘 돌아가는지 Test 해봅시다
이제 잘 지워지죠?
삭제 전 삭제 후
마무리
오늘은 여기까지!
• 3주차
• 검증(form)
• 로그인, 회원가입, 로그아웃
• 유저와 사진 연결하기

More Related Content

What's hot

집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & RankingIan Choi
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개beom kyun choi
 
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기Jeado Ko
 
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기Gyutae Jo
 
Django - CRUD 기능 구현
Django - CRUD 기능 구현Django - CRUD 기능 구현
Django - CRUD 기능 구현Jessica Lee
 
Mongo db 활용 가이드 ch7
Mongo db 활용 가이드 ch7Mongo db 활용 가이드 ch7
Mongo db 활용 가이드 ch7주영 송
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Jin wook
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaHyeonSeok Choi
 
Unify data and model using Apache S2Graph and GraphQL.
Unify data and model using Apache S2Graph and GraphQL.Unify data and model using Apache S2Graph and GraphQL.
Unify data and model using Apache S2Graph and GraphQL.if kakao
 
Python 웹 프로그래밍
Python 웹 프로그래밍Python 웹 프로그래밍
Python 웹 프로그래밍용 최
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'sung ki choi
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기JangHyuk You
 
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱정석 양
 

What's hot (20)

집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
React Query
React QueryReact Query
React Query
 
Elastic stack
Elastic stackElastic stack
Elastic stack
 
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
 
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
 
DDD Start Ch#3
DDD Start Ch#3DDD Start Ch#3
DDD Start Ch#3
 
Django - CRUD 기능 구현
Django - CRUD 기능 구현Django - CRUD 기능 구현
Django - CRUD 기능 구현
 
Mongo db 활용 가이드 ch7
Mongo db 활용 가이드 ch7Mongo db 활용 가이드 ch7
Mongo db 활용 가이드 ch7
 
Hacosa jquery 1th
Hacosa jquery 1thHacosa jquery 1th
Hacosa jquery 1th
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 
Jquery핵심노토
Jquery핵심노토Jquery핵심노토
Jquery핵심노토
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, Kibana
 
Unify data and model using Apache S2Graph and GraphQL.
Unify data and model using Apache S2Graph and GraphQL.Unify data and model using Apache S2Graph and GraphQL.
Unify data and model using Apache S2Graph and GraphQL.
 
Python 웹 프로그래밍
Python 웹 프로그래밍Python 웹 프로그래밍
Python 웹 프로그래밍
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기
 
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
 

Viewers also liked

Writing Fast Code - PyCon HK 2015
Writing Fast Code - PyCon HK 2015Writing Fast Code - PyCon HK 2015
Writing Fast Code - PyCon HK 2015Younggun Kim
 
Introducation to php for beginners
Introducation to php for beginners Introducation to php for beginners
Introducation to php for beginners musrath mohammad
 
EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS
EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS
EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS Joseaneciencias
 
Short Tech Quiz
Short Tech QuizShort Tech Quiz
Short Tech QuizPranavSB
 
Assessing the impact of SolarPulse on performance of utility scale PV plants
Assessing the impact of SolarPulse on performance of utility scale PV plantsAssessing the impact of SolarPulse on performance of utility scale PV plants
Assessing the impact of SolarPulse on performance of utility scale PV plantsMachinePulse
 
Kertas kerja orkestra traditional ukm
Kertas kerja orkestra traditional ukmKertas kerja orkestra traditional ukm
Kertas kerja orkestra traditional ukmamyloi_9
 
Technology Management Chapter 1 Notes
Technology Management Chapter 1 NotesTechnology Management Chapter 1 Notes
Technology Management Chapter 1 NotesRashna_Chaudhry
 
Character Encoding in python
Character Encoding in pythonCharacter Encoding in python
Character Encoding in pythondaesung7kang
 
British Rule in India
British Rule in IndiaBritish Rule in India
British Rule in Indiaisabelchun
 

Viewers also liked (15)

Writing Fast Code - PyCon HK 2015
Writing Fast Code - PyCon HK 2015Writing Fast Code - PyCon HK 2015
Writing Fast Code - PyCon HK 2015
 
GOODREJ 2
GOODREJ 2GOODREJ 2
GOODREJ 2
 
Introducation to php for beginners
Introducation to php for beginners Introducation to php for beginners
Introducation to php for beginners
 
Campaign Execution
Campaign ExecutionCampaign Execution
Campaign Execution
 
EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS
EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS
EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS
 
Short Tech Quiz
Short Tech QuizShort Tech Quiz
Short Tech Quiz
 
Assessing the impact of SolarPulse on performance of utility scale PV plants
Assessing the impact of SolarPulse on performance of utility scale PV plantsAssessing the impact of SolarPulse on performance of utility scale PV plants
Assessing the impact of SolarPulse on performance of utility scale PV plants
 
Java PPT
Java PPTJava PPT
Java PPT
 
Python Programming Essentials - M24 - math module
Python Programming Essentials - M24 - math modulePython Programming Essentials - M24 - math module
Python Programming Essentials - M24 - math module
 
Kertas kerja orkestra traditional ukm
Kertas kerja orkestra traditional ukmKertas kerja orkestra traditional ukm
Kertas kerja orkestra traditional ukm
 
Technology Management Chapter 1 Notes
Technology Management Chapter 1 NotesTechnology Management Chapter 1 Notes
Technology Management Chapter 1 Notes
 
C# simplified
C#  simplifiedC#  simplified
C# simplified
 
Oop Presentation
Oop PresentationOop Presentation
Oop Presentation
 
Character Encoding in python
Character Encoding in pythonCharacter Encoding in python
Character Encoding in python
 
British Rule in India
British Rule in IndiaBritish Rule in India
British Rule in India
 

Similar to Python codelab2

Python codelab1
Python codelab1Python codelab1
Python codelab1건희 김
 
Polymer따라잡기
Polymer따라잡기Polymer따라잡기
Polymer따라잡기Han Jung Hyun
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Kyoung Up Jung
 
Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용정기 김
 
Tks프로젝트v2
Tks프로젝트v2Tks프로젝트v2
Tks프로젝트v2jrlim80
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Gyuwon Yi
 
Hacosa js study 4주차
Hacosa js study 4주차Hacosa js study 4주차
Hacosa js study 4주차Seong Bong Ji
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912Yooseok Choi
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Han Sung Kim
 
Software Architect day - 웹 프레임워크 종결 - metaworks3
Software Architect day - 웹 프레임워크 종결 -  metaworks3Software Architect day - 웹 프레임워크 종결 -  metaworks3
Software Architect day - 웹 프레임워크 종결 - metaworks3uEngine Solutions
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Javajigi Jaesung
 
"Google Vizier: A Service for Black-Box Optimization" Paper Review
"Google Vizier: A Service for Black-Box Optimization" Paper Review"Google Vizier: A Service for Black-Box Optimization" Paper Review
"Google Vizier: A Service for Black-Box Optimization" Paper ReviewLEE HOSEONG
 
Design Pattern 3
Design Pattern 3Design Pattern 3
Design Pattern 3Daniel Lim
 
Python codelab3
Python codelab3Python codelab3
Python codelab3건희 김
 
공간SQL을 이용한 공간자료분석 기초실습
공간SQL을 이용한 공간자료분석 기초실습공간SQL을 이용한 공간자료분석 기초실습
공간SQL을 이용한 공간자료분석 기초실습BJ Jang
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱NAVER D2
 
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축Youngil Cho
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVONYounghan Kim
 

Similar to Python codelab2 (20)

Python codelab1
Python codelab1Python codelab1
Python codelab1
 
Polymer따라잡기
Polymer따라잡기Polymer따라잡기
Polymer따라잡기
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
 
Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용
 
Tks프로젝트v2
Tks프로젝트v2Tks프로젝트v2
Tks프로젝트v2
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
 
Hacosa js study 4주차
Hacosa js study 4주차Hacosa js study 4주차
Hacosa js study 4주차
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
 
okspring3x
okspring3xokspring3x
okspring3x
 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
Software Architect day - 웹 프레임워크 종결 - metaworks3
Software Architect day - 웹 프레임워크 종결 -  metaworks3Software Architect day - 웹 프레임워크 종결 -  metaworks3
Software Architect day - 웹 프레임워크 종결 - metaworks3
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
 
"Google Vizier: A Service for Black-Box Optimization" Paper Review
"Google Vizier: A Service for Black-Box Optimization" Paper Review"Google Vizier: A Service for Black-Box Optimization" Paper Review
"Google Vizier: A Service for Black-Box Optimization" Paper Review
 
Design Pattern 3
Design Pattern 3Design Pattern 3
Design Pattern 3
 
Python codelab3
Python codelab3Python codelab3
Python codelab3
 
공간SQL을 이용한 공간자료분석 기초실습
공간SQL을 이용한 공간자료분석 기초실습공간SQL을 이용한 공간자료분석 기초실습
공간SQL을 이용한 공간자료분석 기초실습
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON
 

Python codelab2

  • 1. Python Code Lab Study Of Landvibe made by 김건희 Django 프레임워크를 활용한 웹페이지 제작
  • 2. Outline • 1주차 • 프로그램 개요, 데모 시연 • 배경 지식 설명 • 환경 설정 • 2주차 • Django - Model, View ,Template, url • 사진 조회, 삽입, 삭제, 수정 • 3주차 • 검증(form) • 로그인, 회원가입, 로그아웃 • 유저와 사진 연결하기
  • 3. Outline • 2주차 • Django - Model, View ,Template, url • 사진 조회, 삽입, 삭제, 수정
  • 4. Django Django의 MTV 패턴 • Template • View 역할 • 사용자의 화면에 보 이는 부분 • View • Controller 역할 • 사용자의 요청을 처 리하여 응답해주는 부분 • Model • Model 역할 • 서버와 DB를 연결해 주는 부분
  • 5. Model • DB에 접속하여 data를 조회(select), 입력(insert), 수정 (update), 삭제(delete)하는 작업을 하는 모듈(model.py) • django.db.models.Model 클래스를 상속
  • 7. Model Field • Field (공통 속성) • null : db값의 null을 허용할지 (Boolean) • blank : admin 에서 empty input value 허용할지 (Boolean) • default : default value • help_text : admin 에서 해당 필드 설명 text • unique : value가 uniqu한지 (Boolean) • TextField • max_length : 최대 길이 • DateTimeField • auto_now : 수정될 때 • auto_now_add : 처음 생성될 때
  • 8. Model Field • ImageField • uploaded_to : 저장경로 설정 • height_field, width_field : 높이, 너비 지정 • ForeignKey • 첫번째 인자 : 참조될 Model이름 • on_delete : 삭제 시 동작 방식 https://docs.djangoproject.com/en/1.10/ref/models/fields/
  • 9. Model • Python manage.py makemigrations • Python manage.py migrate • 기본적인 DB 설정이 끝났으니 다음단계로 넘어갑시다
  • 10. View • HTTP request에 대한 처리를 하는 모듈(view.py) • Client와의 gate(Route)로 urls.py 모듈을 사용 • 실질적인 기능이 구현 되는 곳
  • 11. View 기능을 추가해봅시다! 1. Photo들의 리스트를 출력 URL : localhost:8000/photos
  • 14. ORM Object Relational Mapping • Wiki : 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.
  • 15. QuerySet Select Query • get(**kwargs) • Parameter와 일치하는 한 개의 object 리턴 • kwargs에 unique value • 2개이상일 경우 MultipleObjectReturned 예외 발생 • 일치 값이 없을 경우 DoesNotExist 예외 발생 • all() • 모든 object를 리턴 • filter(** kwargs) • Parameter와 일치하는 여러 개의 object 리턴 https://docs.djangoproject.com/en/1.10/ref/models/querysets/
  • 16. QuerySet Insert Query • create(**kwargs) • Parameter에 지정된 값으로 생성된 object를 database에 저장 • save() • 생성된 object를 database에 저장 https://docs.djangoproject.com/en/1.10/ref/models/querysets/
  • 17. QuerySet Update, Delete Query • update(**kwargs) • Parameter에 지정된 값으로 database값 수정 • delete() • Object를 datase에서 삭제
  • 20. View • View.py • 기존 photo_list 함수에 아래 코드를 추가
  • 21. HTTP Request • Client가 보낸 http 요청을 request object로 저장 • method • GET, POST, PUT, DELETE, … • GET • GET 요청의 parameter들이 dict로 저장 • POST • POST 요청의 parameter들이 dict로 저장 • FILES • 클라이언트에서 보낸 파일 저장
  • 22. HTTP Response • Server에서 Client에 data를 전송 • HttpResponse • Client로 Response를 보내는 객체 • HttpResponseRedirect(url) • Client로 url에 해당하는 HttpResponse를 전송 • render • html 파일과 data를 HttpResponse 객체에 담아서 전 송 • redirect • HttpResponseRedirect 객체에 url을 담아서 전송
  • 23. View 기능을 추가해봅시다! 3. Photo 수정 3-1. • 수정하기 버튼 클릭 • /photos 3-2. • /photos/<id> • photo객체 한 개 불러옴 3-3. • photo db 수정 • /photos 로 redirect
  • 24. View • url.py • View.py • Photo 객체 하나를 database 에서 가져옴 • update.html과 photo 객체 response
  • 25. View 3-1. • 수정하기 버튼 클릭 • /photos 3-2. • /photos/<id> • photo객체 한 개 불러옴 여기까지 확인!
  • 26. View • View.py • 기존 photo_detail 함수 아래에 코드 추가
  • 27. View 잘 돌아가는지 Test 해봅시다 3. Photo 수정 3-1. • 수정하기 버튼 클릭 • /photos 3-2. • /photos/<id> • photo객체 한 개 불러옴 3-3. • photo db 수정 • /photos 로 redirect
  • 28. View 기능을 추가해봅시다! 4. Photo 삭제 4-1. • 삭제 버튼 클릭 • /photos 4-2. • /photos/<id>로 접근 • Photo 객체 db에서 삭제 • 저장된 image 삭제 • /photos로 redirect
  • 29. View • View.py • 기존 photo_detail 함수 아래에 코드 추가
  • 30. View 잘 돌아가는지 Test 해봅시다 4. Photo 삭제 4-1. • 삭제 버튼 클릭 • /photos 4-2. • /photos/<id>로 접근 • Photo 객체 db에서 삭제 • 저장된 image 삭제 • /photos로 redirect
  • 31. View 잘 돌아가는지 Test 해봅시다 잠깐! DB에서는 지웠는데 image 파일은 안지웠잖아요!!!
  • 32. View 잘 돌아가는지 Test 해봅시다 Model의 delete함수를 overriding 해줍시다!
  • 33. View 잘 돌아가는지 Test 해봅시다 이제 잘 지워지죠? 삭제 전 삭제 후
  • 34. 마무리 오늘은 여기까지! • 3주차 • 검증(form) • 로그인, 회원가입, 로그아웃 • 유저와 사진 연결하기