SlideShare a Scribd company logo
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 (20)

PDF
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
Ian Choi
 
PDF
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
beom kyun choi
 
PPTX
React Query
Wonjun Hwang
 
PDF
Elastic stack
Kenu, GwangNam Heo
 
PDF
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
Jeado Ko
 
PDF
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
Gyutae Jo
 
PPTX
DDD Start Ch#3
HyeonSeok Choi
 
PPTX
Django - CRUD 기능 구현
Jessica Lee
 
PDF
Mongo db 활용 가이드 ch7
주영 송
 
PPTX
Hacosa jquery 1th
Seong Bong Ji
 
PPTX
Mongo DB 성능최적화 전략
Jin wook
 
PDF
Jquery핵심노토
jeong seok yang
 
PPTX
Logstash, ElasticSearch, Kibana
HyeonSeok Choi
 
PDF
Unify data and model using Apache S2Graph and GraphQL.
if kakao
 
PPTX
Python 웹 프로그래밍
용 최
 
PPTX
Nodejs, PhantomJS, casperJs, YSlow, expressjs
기동 이
 
PDF
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
sung ki choi
 
PPTX
Mongo db 최범균
beom kyun choi
 
PPTX
Mongo DB 완벽가이드 - 4장 쿼리하기
JangHyuk You
 
PPTX
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
정석 양
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
Ian Choi
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
beom kyun choi
 
React Query
Wonjun Hwang
 
Elastic stack
Kenu, GwangNam Heo
 
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
Jeado Ko
 
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
Gyutae Jo
 
DDD Start Ch#3
HyeonSeok Choi
 
Django - CRUD 기능 구현
Jessica Lee
 
Mongo db 활용 가이드 ch7
주영 송
 
Hacosa jquery 1th
Seong Bong Ji
 
Mongo DB 성능최적화 전략
Jin wook
 
Jquery핵심노토
jeong seok yang
 
Logstash, ElasticSearch, Kibana
HyeonSeok Choi
 
Unify data and model using Apache S2Graph and GraphQL.
if kakao
 
Python 웹 프로그래밍
용 최
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
기동 이
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
sung ki choi
 
Mongo db 최범균
beom kyun choi
 
Mongo DB 완벽가이드 - 4장 쿼리하기
JangHyuk You
 
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
정석 양
 

Viewers also liked (15)

PDF
Writing Fast Code - PyCon HK 2015
Younggun Kim
 
PPTX
GOODREJ 2
Prathamesh Narkar
 
PPT
Introducation to php for beginners
musrath mohammad
 
PDF
Campaign Execution
garykillington
 
PPT
EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS
Joseaneciencias
 
PPTX
Short Tech Quiz
PranavSB
 
PDF
Assessing the impact of SolarPulse on performance of utility scale PV plants
MachinePulse
 
PPTX
Java PPT
Dilip Kr. Jangir
 
PPTX
Python Programming Essentials - M24 - math module
P3 InfoTech Solutions Pvt. Ltd.
 
PDF
Kertas kerja orkestra traditional ukm
amyloi_9
 
PPT
Technology Management Chapter 1 Notes
Rashna_Chaudhry
 
PDF
C# simplified
Mohd Manzoor Ahmed
 
PPT
Oop Presentation
Ghaffar Khan
 
PDF
Character Encoding in python
daesung7kang
 
PPTX
British Rule in India
isabelchun
 
Writing Fast Code - PyCon HK 2015
Younggun Kim
 
Introducation to php for beginners
musrath mohammad
 
Campaign Execution
garykillington
 
EMEF TAJAL ASTRONOMIA JOSEANE CIENCIAS
Joseaneciencias
 
Short Tech Quiz
PranavSB
 
Assessing the impact of SolarPulse on performance of utility scale PV plants
MachinePulse
 
Python Programming Essentials - M24 - math module
P3 InfoTech Solutions Pvt. Ltd.
 
Kertas kerja orkestra traditional ukm
amyloi_9
 
Technology Management Chapter 1 Notes
Rashna_Chaudhry
 
C# simplified
Mohd Manzoor Ahmed
 
Oop Presentation
Ghaffar Khan
 
Character Encoding in python
daesung7kang
 
British Rule in India
isabelchun
 
Ad

Similar to Python codelab2 (20)

PDF
Python codelab1
건희 김
 
PDF
Python codelab3
건희 김
 
PDF
Django, 저는 이렇게 씁니다.
Kyoung Up Jung
 
PPTX
레거시 시스템에 Django 들이밀기
Jiyong Jung
 
PDF
Light Tutorial Django
Kwangyoun Jung
 
PDF
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
PPTX
20171209pycon_fbv_cbv
seokhunkim4
 
PDF
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
Kwangyoun Jung
 
PDF
Django를 Django답게, Django로 뉴스 사이트 만들기
Kyoung Up Jung
 
PDF
Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf
Kyoung Up Jung
 
PDF
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
smartstudy_official
 
PPTX
Django 2
Kim HyeockJin
 
PPTX
뭔지 모르지만 발표
Kyoung Up Jung
 
ODP
Django와 flask
Jiho Lee
 
PDF
간단한 블로그를 만들며 Django 이해하기
Kyoung Up Jung
 
PPTX
경상대 멋쟁이사자처럼 8기 정기세션 (6장 Blog프로젝트 - Model,admin).pptx
Lee Dahae
 
PDF
Django admin site 커스텀하여 적극적으로 활용하기
영우 박
 
PDF
201803 파이썬 세미나
JeongHwan Kim
 
PDF
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
 
PDF
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
Youngil Cho
 
Python codelab1
건희 김
 
Python codelab3
건희 김
 
Django, 저는 이렇게 씁니다.
Kyoung Up Jung
 
레거시 시스템에 Django 들이밀기
Jiyong Jung
 
Light Tutorial Django
Kwangyoun Jung
 
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
20171209pycon_fbv_cbv
seokhunkim4
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
Kwangyoun Jung
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Kyoung Up Jung
 
Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf
Kyoung Up Jung
 
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
smartstudy_official
 
Django 2
Kim HyeockJin
 
뭔지 모르지만 발표
Kyoung Up Jung
 
Django와 flask
Jiho Lee
 
간단한 블로그를 만들며 Django 이해하기
Kyoung Up Jung
 
경상대 멋쟁이사자처럼 8기 정기세션 (6장 Blog프로젝트 - Model,admin).pptx
Lee Dahae
 
Django admin site 커스텀하여 적극적으로 활용하기
영우 박
 
201803 파이썬 세미나
JeongHwan Kim
 
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
 
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
Youngil Cho
 
Ad

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) • 로그인, 회원가입, 로그아웃 • 유저와 사진 연결하기