Upload
kyoung-up-jung
View
4.175
Download
5
Embed Size (px)
Citation preview
간단한 블로그를 만들며Django 이해하기
Django 101 - 2015/2/14 Python Korea
파이
저는
입니다.
Django
알파카코믹스
로 만들었습니다.
https://alpacacomics.com
Django를 배우기 전에
HTTP 요청과 응답을
이해해봅시다.
식당에 갑니다.
스테이크를 주문합니다.
주방에서 음식을 만듭니다.
손님에게 내놓습니다.
식당에서
스테이크 1인분이요!
HTTP
https://alpacacomics.com
HTTP
https://alpacacomics.com
ServerHTML
CSS
JS
...
https://alpacacomics.com
HTTP
Request
Response
대충 설명하면 이렇습니다.
주문 / 음식URL* / HTML*
Request / Response
이 모든 것은
‘문서’로 되어있습니다.
https://alpacacomics.com
HTTP
Request
Response
Request ‘문서’
https://alpacacomics.com
HTTP
Request
Response
Response ‘문서’
인터넷 브라우저는
Request 문서를만들어서 보내고
Response 문서를받습니다.
그리고예쁘게 보여줍니다.
서버는
Request 문서를 해석하고
Response 문서를만들어 줍니다.
Django는
Request를 해석하고
Response를 만듭니다.
Django는 어디에?
https://alpacacomics.comServer
HTML
CSS
JS
...
Django
Server를 확대하면
VIEW
Server
urls.py …
MODEL
TEMPLATE
Data
Base
Web
Server
VIEW
Server
urls.py …
MODEL
TEMPLATE
Data
Base
Web
ServerDjango
Django가 하는 일
Application server
다른 건 못해요.
VIEW
쓸모 있는 친구들
urls.py …
MODEL
TEMPLATE
Data
Base
Web
Server
uWSGI
Nginx
MySQL
manage.py runserver
Django만 확대하면
views.py
Django
urls.py
models.py
templates/ ...html
Middle
ware*
settings.py
대충 흐름만 보세요.
Django 홈페이지 보세요.
제대로 된 내용이 궁금하시면?!
http://www.djangoproject.com
간단한 블로그를 만들면서
이 흐름을 알아봅시다.
우리가 만들 블로그
어떤 블로그를 만들 것인가?
터..텀블러?
글 목록 보기
/
그냥 다 뿌립니다.
글 내용 보기
/{ 글 번호 }/
없으면 허전하죠.
글 쓰기
/create/
쓰긴 해야...
분류된 글 목록
/?category={ 분류 번호 }
필터 생색 내봅니다.
단순합니다.
모델도 설계해봅니다.
name
Category
더 할게 없네
categorytitle
content
Post
created 는 덤으로
별거 없습니다.
이제 만들어봅시다.
실습 프로젝트
https://github.com/perhapsspy/pylog/commits/master
보면서 합시다.
Python 2.7.x
설치되어 있으시겠죠?
어..없으면 곤란합니다.
pip install virtualenvwappermkvirtualenv pylogworkon pylog
deactivate
Python 가상 환경 만들기
https://virtualenvwrapper.readthedocs.org/en/latest/
pip install django
Django 설치
https://docs.djangoproject.com/en/1.7/intro/install/
django-admin startproject pylog
Django 프로젝트 생성
https://docs.djangoproject.com/en/1.7/intro/tutorial01/#creating-a-project
cd pylogdjango-admin startapp blogpython manage.py runserverctrl + c
blog 앱 생성
http://127.0.0.1:8000/
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
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)
python manage.py makemigrations blogpython manage.py migratepython manage.py createsuperuserpython manage.py runserver
Database Migration
http://127.0.0.1:8000/admin/
Category와 Post를적당히 입력해봅시다.
admin 페이지에서
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
진행합니다.
이제부터는 github commit을 보면서
소스 넣기 힘들어요… 설명도 강의하면서...
home view
hi
https://github.com/perhapsspy/pylog/commit/06c31a37649d8cc52a2199886b67be3acf49f885
기본 template 적용
https://github.com/perhapsspy/pylog/commit/ba2543addd36bf5717d62d31e35c8376b23f8e57
template 상속으로home 구현
https://github.com/perhapsspy/pylog/commit/fe9827f4486ed73fa5fc0c8ca67325fcf3b5d9a7
home에서글 목록 보여주기
https://github.com/perhapsspy/pylog/commit/0c00fb190b48dcbe7a916666ef3d77a3c1a727b0
글 내용 보기 만들기
https://github.com/perhapsspy/pylog/commit/148b4de0f7d166933bf3e9d327d4d7195a40cbaa
FBV를 CBV로 바꾸기
https://github.com/perhapsspy/pylog/commit/22595aa6df9589b74a5764722f71d599bd372438
글쓰기 기능 추가
https://github.com/perhapsspy/pylog/commit/d9b03567d57be664b976550567825435cb56d4ec
글 목록에서 분류 표시
https://github.com/perhapsspy/pylog/commit/2f38bbd60055029022abff4c4cd1e3a0d9028095
분류 기능 추가
https://github.com/perhapsspy/pylog/commit/713e03d43828d3301ae6b266e59638c6ee42b4a3
테스트 케이스 작성
https://github.com/perhapsspy/pylog/commit/1b487115c9f6602a7a65464096ef11512f3d520f
수고하셨습니다.