django hands-on {beginner} - github pages · (venv) $ python manage.py startapp coffeeshop 12. 3)...

33
Django Hands-on {Beginner} Created by Sangkon Han ( @sigmadream ) PyBusan / DjangoBusanUserGroup 1

Upload: others

Post on 23-Aug-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

Django Hands-on {Beginner}Created by Sangkon Han ( @sigmadream )

PyBusan / DjangoBusanUserGroup

1

Page 2: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

핵심 내용1. Python, VirtualEnv 그리고 Django 설치

2. HelloWorld

3. Todo(POST/GET)

2

Page 3: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

Python, VirtualEnv 그리고 Django 설치

3

Page 4: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

1) Python 설치

Python(>= 3.6 이상)을 설치하세요.

될 수 있으면 Python(>= 3.5, 64bit) 이상을 사용하세요.

Python을 여러개 설치하지 마세요.

개인적으로 Anaconda를 추천하진 않지만, Anaconda를 사용하실꺼면Anaconda만 사용하세요.

4

Page 5: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

2) 설치확인

콘솔/컨맨드(cmd)에서 아래 명령어를 사용해서 파이썬이 올바로 실행되는지 확인하세요.

$ python --version Python 3.7.2

5

Page 6: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

3) VirtualEnv 설정

VirtualEnv 만들기

$ python -m venv venv

VirtualEnv 활성화

$ venv\Scripts\activate or $ source venv/bin/activate

venv가 활성화가 된다면 아래와 같은 화면을 볼 수 있음

(venv) $

6

Page 7: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

4) Django 설치

pip를 사용한 django 설치

(venv) $ pip install django

7

Page 8: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

5) PyCharm 설치

개인적으로 VSCode를 주로 사용하지만 교육의 편의성을 위해서 PyCharm을사용.

PyCharm 다운로드 -> 설치

Project Interprete 설정

django 설치

8

Page 9: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

2. HelloWorld

9

Page 10: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

0) Django의 기본 구성 요소

Model

DB 사용을 위한 인터페이스

URLConf

URL을 정의

View

HTTP 요청을 처리

Template

HTML 생성

Admin 10

Page 11: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

1) Django 프로젝트 생성 및 실행

(venv) $ django-admin startproject helloworld (venv) $ cd helloworld (venv) $ python manage.py runserver // 실행 취소는 Ctrl + C

11

Page 12: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

2) CoffeeShop 앱 추가

(venv) $ python manage.py startapp coffeeshop

12

Page 13: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

3) 앱 추가

helloworld/settings.py 수정

INSTALLED_APPS = [ ... 'coffeeshop', ]

실행 확인

(venv) $ python manage.py startapp runserver

13

Page 14: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

4) Model 수정(coffeeshop/models.py)

from django.db import models class Menu(models.Model): name = models.CharField(max_length=100) price = models.PositiveIntegerField() create_at = models.DateTimeField(auto_now_add=True) update_at = models.DateTimeField(auto_now=True) def __str__(self): return self.name

14

Page 15: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

5) Model 적용

(venv) $ python manage.py makemigrations (venv) $ python manage.py migrate

15

Page 16: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

6) 데이터 입력을 위해서 Admin 설정

관리자 추가

(venv) $ python manage.py createsuperuser

Admin 추가

from django.contrib import admin from .models import Menu admin.site.register(Menu)

16

Page 17: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

7) View 수정(coffeeshop/views.py)

from django.shortcuts import render from .models import Menu def menu_list(request): menus = Menu.objects.all() return render(request, 'shop/menu_list.html', { 'menus': menus })

17

Page 18: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

8) URL 수정(helloworld/urls.py)

from django.contrib import admin from django.urls import path from coffeeshop import views urlpatterns = [ path('admin/', admin.site.urls), path('shop/', views.menu_list) ]

18

Page 19: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

9) Template 작성(coffeeshop/templates/shop/menu_list.html)

<table> <tbody> {% for menu in menus %} <tr> <td>{{ menu.id }}</td> <td>{{ menu.name }}</td> <td>{{ menu.price }}</td> </tr> {% endfor %} </tbody> </table>

19

Page 20: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

3. FBV for Todo

20

Page 21: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

1) 프록젝트 설정

(venv) $ django-admin startproject tasker (venv) $ cd tasker (venv) $ python manage.py runserver

21

Page 22: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

2) Todo 앱 추가

(venv) $ python manage.py startapp todo

22

Page 23: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

3) Todo 앱 설정

INSTALLED_APPS = [ ... 'todo', ]

23

Page 24: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

4) Todo Model 작성(tood/model.py)

from django.db import models class Todo(models.Model): title = models.CharField(max_length=50) text = models.TextField(blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.title

24

Page 25: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

5) Model 적용

(venv) $ python manage.py makemigrations (venv) $ python manage.py migrate

25

Page 26: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

6) 데이터 입력을 위해서 Admin 설정

관리자 추가

(venv) $ python manage.py createsuperuser

Admin 추가

from django.contrib import admin from .models import Todo admin.site.register(Todo)

26

Page 27: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

7) View 수정(todo/views.py)

from django.shortcuts import render from .models import Todo def todo_list(request): todos = Todo.objects.all() return render(request, 'todo/todo_list.html', { 'todos': todos })

27

Page 28: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

8) URL 추가

from django.contrib import admin from django.urls import path from todo import views urlpatterns = [ path('admin/', admin.site.urls), path('todo/', views.todo_list), ]

28

Page 29: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

9) Template 작성(todo/templates/todo/todo_list.html)

<table> <tbody> {% for todo in todos %} <tr> <td>{{ todo.id }}</td> <td>{{ todo.title }}</td> <td>{{ todo.text }}</td> </tr> {% endfor %} </tbody> </table>

29

Page 30: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

10) POST를 사용한 데이터 추가를 위한 Template 추가

<h2>New Todo</h2> <form action="" method="post"> {% csrf_token %} <table class="table table-bordered"> <tbody> <tr> <th>title</th> <td> <input type="text" name="title" value="{{ title }}"/> </td> </tr> <tr> <th>text</th> <td> <textarea name="text">{{ text }}</textarea> </td>

</tr>

30

Page 31: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

11) POST 처리를 위한 View 추가

def todo_new(request): if request.method == 'POST': title = request.POST.get('title') text = request.POST.get('text') // 데이터 검증 if title and text: todo = Todo() todo.title = title todo.text = text todo.save() return render(request, 'todo/todo_new.html') else: return render(request, 'todo/todo_new.html')

31

Page 32: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

12) URL 추가

from django.contrib import admin from django.urls import path from todo import views urlpatterns = [ path('admin/', admin.site.urls), path('todo/', views.todo_list), path('todo/new/', views.todo_new),]

32

Page 33: Django Hands-on {Beginner} - GitHub Pages · (venv) $ python manage.py startapp coffeeshop 12. 3) ¥ B helloworld/settings.py

33