간단한 블로그를 만들며 django 이해하기

81
간단한 블로그를 만들며 Django 이해하기 Django 101 - 2015/2/14 Python Korea

Upload: kyoung-up-jung

Post on 15-Jul-2015

4.175 views

Category:

Software


5 download

TRANSCRIPT

Page 1: 간단한 블로그를 만들며 Django 이해하기

간단한 블로그를 만들며Django 이해하기

Django 101 - 2015/2/14 Python Korea

Page 2: 간단한 블로그를 만들며 Django 이해하기

파이

저는

입니다.

Page 3: 간단한 블로그를 만들며 Django 이해하기

Django

알파카코믹스

로 만들었습니다.

Page 4: 간단한 블로그를 만들며 Django 이해하기

https://alpacacomics.com

Page 5: 간단한 블로그를 만들며 Django 이해하기

Django를 배우기 전에

Page 6: 간단한 블로그를 만들며 Django 이해하기

HTTP 요청과 응답을

Page 7: 간단한 블로그를 만들며 Django 이해하기

이해해봅시다.

Page 8: 간단한 블로그를 만들며 Django 이해하기

식당에 갑니다.

Page 9: 간단한 블로그를 만들며 Django 이해하기

스테이크를 주문합니다.

Page 10: 간단한 블로그를 만들며 Django 이해하기

주방에서 음식을 만듭니다.

Page 11: 간단한 블로그를 만들며 Django 이해하기

손님에게 내놓습니다.

Page 12: 간단한 블로그를 만들며 Django 이해하기

식당에서

스테이크 1인분이요!

Page 13: 간단한 블로그를 만들며 Django 이해하기

HTTP

https://alpacacomics.com

Page 14: 간단한 블로그를 만들며 Django 이해하기

HTTP

https://alpacacomics.com

ServerHTML

CSS

JS

...

Page 15: 간단한 블로그를 만들며 Django 이해하기

https://alpacacomics.com

HTTP

Request

Response

Page 16: 간단한 블로그를 만들며 Django 이해하기

대충 설명하면 이렇습니다.

Page 17: 간단한 블로그를 만들며 Django 이해하기

주문 / 음식URL* / HTML*

Request / Response

Page 18: 간단한 블로그를 만들며 Django 이해하기

이 모든 것은

Page 19: 간단한 블로그를 만들며 Django 이해하기

‘문서’로 되어있습니다.

Page 20: 간단한 블로그를 만들며 Django 이해하기

https://alpacacomics.com

HTTP

Request

Response

Page 21: 간단한 블로그를 만들며 Django 이해하기

Request ‘문서’

Page 22: 간단한 블로그를 만들며 Django 이해하기

https://alpacacomics.com

HTTP

Request

Response

Page 23: 간단한 블로그를 만들며 Django 이해하기

Response ‘문서’

Page 24: 간단한 블로그를 만들며 Django 이해하기

인터넷 브라우저는

Page 25: 간단한 블로그를 만들며 Django 이해하기

Request 문서를만들어서 보내고

Page 26: 간단한 블로그를 만들며 Django 이해하기

Response 문서를받습니다.

Page 27: 간단한 블로그를 만들며 Django 이해하기

그리고예쁘게 보여줍니다.

Page 28: 간단한 블로그를 만들며 Django 이해하기

서버는

Page 29: 간단한 블로그를 만들며 Django 이해하기

Request 문서를 해석하고

Page 30: 간단한 블로그를 만들며 Django 이해하기

Response 문서를만들어 줍니다.

Page 31: 간단한 블로그를 만들며 Django 이해하기

Django는

Page 32: 간단한 블로그를 만들며 Django 이해하기

Request를 해석하고

Page 33: 간단한 블로그를 만들며 Django 이해하기

Response를 만듭니다.

Page 34: 간단한 블로그를 만들며 Django 이해하기

Django는 어디에?

https://alpacacomics.comServer

HTML

CSS

JS

...

Django

Page 35: 간단한 블로그를 만들며 Django 이해하기

Server를 확대하면

Page 36: 간단한 블로그를 만들며 Django 이해하기

VIEW

Server

urls.py …

MODEL

TEMPLATE

Data

Base

Web

Server

Page 37: 간단한 블로그를 만들며 Django 이해하기

VIEW

Server

urls.py …

MODEL

TEMPLATE

Data

Base

Web

ServerDjango

Page 38: 간단한 블로그를 만들며 Django 이해하기

Django가 하는 일

Page 39: 간단한 블로그를 만들며 Django 이해하기

Application server

Page 40: 간단한 블로그를 만들며 Django 이해하기

다른 건 못해요.

Page 41: 간단한 블로그를 만들며 Django 이해하기

VIEW

쓸모 있는 친구들

urls.py …

MODEL

TEMPLATE

Data

Base

Web

Server

uWSGI

Nginx

MySQL

manage.py runserver

Page 42: 간단한 블로그를 만들며 Django 이해하기

Django만 확대하면

Page 43: 간단한 블로그를 만들며 Django 이해하기

views.py

Django

urls.py

models.py

templates/ ...html

Middle

ware*

settings.py

Page 44: 간단한 블로그를 만들며 Django 이해하기

대충 흐름만 보세요.

Page 45: 간단한 블로그를 만들며 Django 이해하기

Django 홈페이지 보세요.

제대로 된 내용이 궁금하시면?!

http://www.djangoproject.com

Page 46: 간단한 블로그를 만들며 Django 이해하기

간단한 블로그를 만들면서

Page 47: 간단한 블로그를 만들며 Django 이해하기

이 흐름을 알아봅시다.

Page 48: 간단한 블로그를 만들며 Django 이해하기

우리가 만들 블로그

어떤 블로그를 만들 것인가?

터..텀블러?

Page 49: 간단한 블로그를 만들며 Django 이해하기

글 목록 보기

/

그냥 다 뿌립니다.

Page 50: 간단한 블로그를 만들며 Django 이해하기

글 내용 보기

/{ 글 번호 }/

없으면 허전하죠.

Page 51: 간단한 블로그를 만들며 Django 이해하기

글 쓰기

/create/

쓰긴 해야...

Page 52: 간단한 블로그를 만들며 Django 이해하기

분류된 글 목록

/?category={ 분류 번호 }

필터 생색 내봅니다.

Page 53: 간단한 블로그를 만들며 Django 이해하기

단순합니다.

Page 54: 간단한 블로그를 만들며 Django 이해하기

모델도 설계해봅니다.

Page 55: 간단한 블로그를 만들며 Django 이해하기

name

Category

더 할게 없네

Page 56: 간단한 블로그를 만들며 Django 이해하기

categorytitle

content

Post

created 는 덤으로

Page 57: 간단한 블로그를 만들며 Django 이해하기

별거 없습니다.

Page 58: 간단한 블로그를 만들며 Django 이해하기

이제 만들어봅시다.

Page 59: 간단한 블로그를 만들며 Django 이해하기

실습 프로젝트

https://github.com/perhapsspy/pylog/commits/master

보면서 합시다.

Page 60: 간단한 블로그를 만들며 Django 이해하기

Python 2.7.x

설치되어 있으시겠죠?

어..없으면 곤란합니다.

Page 61: 간단한 블로그를 만들며 Django 이해하기

pip install virtualenvwappermkvirtualenv pylogworkon pylog

deactivate

Python 가상 환경 만들기

https://virtualenvwrapper.readthedocs.org/en/latest/

Page 62: 간단한 블로그를 만들며 Django 이해하기

pip install django

Django 설치

https://docs.djangoproject.com/en/1.7/intro/install/

Page 63: 간단한 블로그를 만들며 Django 이해하기

django-admin startproject pylog

Django 프로젝트 생성

https://docs.djangoproject.com/en/1.7/intro/tutorial01/#creating-a-project

Page 64: 간단한 블로그를 만들며 Django 이해하기

cd pylogdjango-admin startapp blogpython manage.py runserverctrl + c

blog 앱 생성

http://127.0.0.1:8000/

Page 65: 간단한 블로그를 만들며 Django 이해하기

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 이해하기

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 이해하기

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 이해하기

Category와 Post를적당히 입력해봅시다.

admin 페이지에서

Page 69: 간단한 블로그를 만들며 Django 이해하기

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 이해하기

진행합니다.

이제부터는 github commit을 보면서

소스 넣기 힘들어요… 설명도 강의하면서...

Page 71: 간단한 블로그를 만들며 Django 이해하기

home view

hi

https://github.com/perhapsspy/pylog/commit/06c31a37649d8cc52a2199886b67be3acf49f885

Page 72: 간단한 블로그를 만들며 Django 이해하기

기본 template 적용

https://github.com/perhapsspy/pylog/commit/ba2543addd36bf5717d62d31e35c8376b23f8e57

Page 73: 간단한 블로그를 만들며 Django 이해하기

template 상속으로home 구현

https://github.com/perhapsspy/pylog/commit/fe9827f4486ed73fa5fc0c8ca67325fcf3b5d9a7

Page 74: 간단한 블로그를 만들며 Django 이해하기

home에서글 목록 보여주기

https://github.com/perhapsspy/pylog/commit/0c00fb190b48dcbe7a916666ef3d77a3c1a727b0

Page 75: 간단한 블로그를 만들며 Django 이해하기

글 내용 보기 만들기

https://github.com/perhapsspy/pylog/commit/148b4de0f7d166933bf3e9d327d4d7195a40cbaa

Page 76: 간단한 블로그를 만들며 Django 이해하기

FBV를 CBV로 바꾸기

https://github.com/perhapsspy/pylog/commit/22595aa6df9589b74a5764722f71d599bd372438

Page 77: 간단한 블로그를 만들며 Django 이해하기

글쓰기 기능 추가

https://github.com/perhapsspy/pylog/commit/d9b03567d57be664b976550567825435cb56d4ec

Page 78: 간단한 블로그를 만들며 Django 이해하기

글 목록에서 분류 표시

https://github.com/perhapsspy/pylog/commit/2f38bbd60055029022abff4c4cd1e3a0d9028095

Page 79: 간단한 블로그를 만들며 Django 이해하기

분류 기능 추가

https://github.com/perhapsspy/pylog/commit/713e03d43828d3301ae6b266e59638c6ee42b4a3

Page 80: 간단한 블로그를 만들며 Django 이해하기

테스트 케이스 작성

https://github.com/perhapsspy/pylog/commit/1b487115c9f6602a7a65464096ef11512f3d520f

Page 81: 간단한 블로그를 만들며 Django 이해하기

수고하셨습니다.