간단한 블로그를 만들며 django 이해하기
TRANSCRIPT
![Page 1: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/1.jpg)
간단한 블로그를 만들며Django 이해하기
Django 101 - 2015/2/14 Python Korea
![Page 2: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/2.jpg)
파이
저는
입니다.
![Page 3: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/3.jpg)
Django
알파카코믹스
로 만들었습니다.
![Page 4: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/4.jpg)
https://alpacacomics.com
![Page 5: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/5.jpg)
Django를 배우기 전에
![Page 6: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/6.jpg)
HTTP 요청과 응답을
![Page 7: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/7.jpg)
이해해봅시다.
![Page 8: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/8.jpg)
식당에 갑니다.
![Page 9: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/9.jpg)
스테이크를 주문합니다.
![Page 10: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/10.jpg)
주방에서 음식을 만듭니다.
![Page 11: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/11.jpg)
손님에게 내놓습니다.
![Page 12: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/12.jpg)
식당에서
스테이크 1인분이요!
![Page 13: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/13.jpg)
HTTP
https://alpacacomics.com
![Page 14: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/14.jpg)
HTTP
https://alpacacomics.com
ServerHTML
CSS
JS
...
![Page 15: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/15.jpg)
https://alpacacomics.com
HTTP
Request
Response
![Page 16: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/16.jpg)
대충 설명하면 이렇습니다.
![Page 17: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/17.jpg)
주문 / 음식URL* / HTML*
Request / Response
![Page 18: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/18.jpg)
이 모든 것은
![Page 19: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/19.jpg)
‘문서’로 되어있습니다.
![Page 20: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/20.jpg)
https://alpacacomics.com
HTTP
Request
Response
![Page 21: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/21.jpg)
Request ‘문서’
![Page 22: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/22.jpg)
https://alpacacomics.com
HTTP
Request
Response
![Page 23: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/23.jpg)
Response ‘문서’
![Page 24: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/24.jpg)
인터넷 브라우저는
![Page 25: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/25.jpg)
Request 문서를만들어서 보내고
![Page 26: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/26.jpg)
Response 문서를받습니다.
![Page 27: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/27.jpg)
그리고예쁘게 보여줍니다.
![Page 28: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/28.jpg)
서버는
![Page 29: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/29.jpg)
Request 문서를 해석하고
![Page 30: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/30.jpg)
Response 문서를만들어 줍니다.
![Page 31: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/31.jpg)
Django는
![Page 32: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/32.jpg)
Request를 해석하고
![Page 33: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/33.jpg)
Response를 만듭니다.
![Page 34: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/34.jpg)
Django는 어디에?
https://alpacacomics.comServer
HTML
CSS
JS
...
Django
![Page 35: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/35.jpg)
Server를 확대하면
![Page 36: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/36.jpg)
VIEW
Server
urls.py …
MODEL
TEMPLATE
Data
Base
Web
Server
![Page 37: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/37.jpg)
VIEW
Server
urls.py …
MODEL
TEMPLATE
Data
Base
Web
ServerDjango
![Page 38: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/38.jpg)
Django가 하는 일
![Page 39: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/39.jpg)
Application server
![Page 40: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/40.jpg)
다른 건 못해요.
![Page 41: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/41.jpg)
VIEW
쓸모 있는 친구들
urls.py …
MODEL
TEMPLATE
Data
Base
Web
Server
uWSGI
Nginx
MySQL
manage.py runserver
![Page 42: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/42.jpg)
Django만 확대하면
![Page 43: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/43.jpg)
views.py
Django
urls.py
models.py
templates/ ...html
Middle
ware*
settings.py
![Page 44: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/44.jpg)
대충 흐름만 보세요.
![Page 45: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/45.jpg)
Django 홈페이지 보세요.
제대로 된 내용이 궁금하시면?!
http://www.djangoproject.com
![Page 46: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/46.jpg)
간단한 블로그를 만들면서
![Page 47: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/47.jpg)
이 흐름을 알아봅시다.
![Page 48: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/48.jpg)
우리가 만들 블로그
어떤 블로그를 만들 것인가?
터..텀블러?
![Page 49: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/49.jpg)
글 목록 보기
/
그냥 다 뿌립니다.
![Page 50: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/50.jpg)
글 내용 보기
/{ 글 번호 }/
없으면 허전하죠.
![Page 51: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/51.jpg)
글 쓰기
/create/
쓰긴 해야...
![Page 52: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/52.jpg)
분류된 글 목록
/?category={ 분류 번호 }
필터 생색 내봅니다.
![Page 53: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/53.jpg)
단순합니다.
![Page 54: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/54.jpg)
모델도 설계해봅니다.
![Page 55: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/55.jpg)
name
Category
더 할게 없네
![Page 56: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/56.jpg)
categorytitle
content
Post
created 는 덤으로
![Page 57: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/57.jpg)
별거 없습니다.
![Page 58: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/58.jpg)
이제 만들어봅시다.
![Page 59: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/59.jpg)
실습 프로젝트
https://github.com/perhapsspy/pylog/commits/master
보면서 합시다.
![Page 60: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/60.jpg)
Python 2.7.x
설치되어 있으시겠죠?
어..없으면 곤란합니다.
![Page 61: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/61.jpg)
pip install virtualenvwappermkvirtualenv pylogworkon pylog
deactivate
Python 가상 환경 만들기
https://virtualenvwrapper.readthedocs.org/en/latest/
![Page 62: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/62.jpg)
pip install django
Django 설치
https://docs.djangoproject.com/en/1.7/intro/install/
![Page 63: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/63.jpg)
django-admin startproject pylog
Django 프로젝트 생성
https://docs.djangoproject.com/en/1.7/intro/tutorial01/#creating-a-project
![Page 64: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/64.jpg)
cd pylogdjango-admin startapp blogpython manage.py runserverctrl + c
blog 앱 생성
http://127.0.0.1:8000/
![Page 65: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/65.jpg)
pylog/blog/models.py
# -*- coding: utf-8 -*-
from django.db import models
class Category(models.Model):class Meta:
verbose_name = u'분류'
ordering = ['name']name = models.CharField(verbose_name=u'이름', max_length=50)
def __unicode__(self):return self.name
class Post(models.Model):class Meta:
verbose_name = u'글'ordering = ['created']
category = models.ForeignKey(Category, verbose_name=u'분류', null=True, blank=True)title = models.CharField(verbose_name=u'제목', max_length=256)content = models.TextField(u'내용', blank=True, default='')
created = models.DateTimeField(auto_now_add=True, verbose_name=u'생성일')
def __unicode__(self):
return self.title
![Page 66: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/66.jpg)
pylog/blog/admin.py
from django.contrib import admin
from blog.models import Category, Post
class CategoryAdmin(admin.ModelAdmin):
list_display = ['id', 'name']
list_editable = ['name']
search_fields = ['name']
ordering = ['name']
class PostAdmin(admin.ModelAdmin):
list_display = ['id', 'title', 'created']
list_filter = ['category']
list_display_links = ['id', 'title']
search_fields = ['title', 'content', ]
ordering = ['-created']
admin.site.register(Category, CategoryAdmin)
admin.site.register(Post, PostAdmin)
![Page 67: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/67.jpg)
python manage.py makemigrations blogpython manage.py migratepython manage.py createsuperuserpython manage.py runserver
Database Migration
http://127.0.0.1:8000/admin/
![Page 68: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/68.jpg)
Category와 Post를적당히 입력해봅시다.
admin 페이지에서
![Page 69: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/69.jpg)
Post admin에 Category 추가
class PostAdmin(admin.ModelAdmin):
- list_display = ['id', 'title', 'created']
+ list_display = ['id','category', 'title', 'created']
list_filter = ['category']
+ list_editable = ['category']
list_display_links = ['id', 'title']
search_fields = ['title', 'content', ]
ordering = ['-created']
pylog/blog/admin.py
![Page 70: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/70.jpg)
진행합니다.
이제부터는 github commit을 보면서
소스 넣기 힘들어요… 설명도 강의하면서...
![Page 71: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/71.jpg)
home view
hi
https://github.com/perhapsspy/pylog/commit/06c31a37649d8cc52a2199886b67be3acf49f885
![Page 72: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/72.jpg)
기본 template 적용
https://github.com/perhapsspy/pylog/commit/ba2543addd36bf5717d62d31e35c8376b23f8e57
![Page 73: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/73.jpg)
template 상속으로home 구현
https://github.com/perhapsspy/pylog/commit/fe9827f4486ed73fa5fc0c8ca67325fcf3b5d9a7
![Page 74: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/74.jpg)
home에서글 목록 보여주기
https://github.com/perhapsspy/pylog/commit/0c00fb190b48dcbe7a916666ef3d77a3c1a727b0
![Page 75: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/75.jpg)
글 내용 보기 만들기
https://github.com/perhapsspy/pylog/commit/148b4de0f7d166933bf3e9d327d4d7195a40cbaa
![Page 76: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/76.jpg)
FBV를 CBV로 바꾸기
https://github.com/perhapsspy/pylog/commit/22595aa6df9589b74a5764722f71d599bd372438
![Page 77: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/77.jpg)
글쓰기 기능 추가
https://github.com/perhapsspy/pylog/commit/d9b03567d57be664b976550567825435cb56d4ec
![Page 78: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/78.jpg)
글 목록에서 분류 표시
https://github.com/perhapsspy/pylog/commit/2f38bbd60055029022abff4c4cd1e3a0d9028095
![Page 79: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/79.jpg)
분류 기능 추가
https://github.com/perhapsspy/pylog/commit/713e03d43828d3301ae6b266e59638c6ee42b4a3
![Page 80: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/80.jpg)
테스트 케이스 작성
https://github.com/perhapsspy/pylog/commit/1b487115c9f6602a7a65464096ef11512f3d520f
![Page 81: 간단한 블로그를 만들며 Django 이해하기](https://reader031.vdocuments.net/reader031/viewer/2022013115/55a59f0c1a28ab9a018b46e3/html5/thumbnails/81.jpg)
수고하셨습니다.