Django basic 1에서 사용했던 프로젝트를 그대로 사용할 것이다. basic 1에서도 동일하게 url mapping을 했지만 좀 더 많은 view 작성해서 url과 mapping 해볼 것이다.
일단 polls/views.py에 메서드를 추가해본다.
#polls/views.py
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello world.")
def select(request):
message = '수 하나를 입력해주세요.'
return HttpResponse(message)
def result(request):
message = '추첨 결과입니다.'
return HttpResponse(message)
polls/urls.py 새로 추가된 메서드를 연결시켜준다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('select/', views.select, name='select'),
path('result/', views.result, name='result'),
]
$python manage.py runserver를 통해
http://127.0.0.1:8000/select/
http://127.0.0.1:8000/result/
주소창에 위 주소를 입력해보면 작성된 코드가 잘 작동되는 학인할 수 있다.
path 안에 있는 parameter이다. 이런 parameter의 종류는 int , string, slug이다.
예를 들어 위 코드 카페의 20번째 커피의 디테일에 해당하는 url www.wecode_cafe.com/coffee/20/detail를 방문한다고 했을 때 숫자 20까지 이와 같이 url에 변수가 변수가 넣어져 있는 경우 직접 url maping을 하지 않고 path parameter를 사용하여 더 간결하게 구현할 수 있다.
urlpatterns = [
path('', views.index, name='index'),
path('select/<int:number>/', views.select, name='select'),
path('result/', views.result, name='result'),
]
<int:number>는 select/숫자(정수) 라는 형태이다.
def select(request, number):
message = '수 하나를 입력해주세요.'
return HttpResponse(message)
path에 연결되어있는 views에 select메서드에 인자로 넘겨준다.
모델은 정보들을 저장하기 위해 사용하는 개념이다. 데이터 베이스가 알아들을수 있도록 변수를 지정해서 데이터 베이스와 연동하여 데이터를 처리한다.
새로운 second를 만들고 setting.py에서 second를 추가하고, url maping까지 완료한다.
#second/models.py
from django.db import models
class Post(models.Model): # Post 라는 게시글을 나타내는 모델을 정의
title = models.CharField(max_length=30) # 30자 이하의 문자열
content = models.TextField() # 긴 문자열
created_at = models.DateTimeField(auto_now_add=True) # 글 작성 시 (이 모델의 데이터(레코드) 저장 시) 생성 시각
updated_at = models.DateTimeField(auto_now=True) # 저장된 레코드 수정 시 수정 시각
# num_stars = models.IntegerField() # 숫자 필드는 이렇게 선언한다.
데이터 베이스와 모델의 연동을 위해 데이터 베이스가 해석할 수 있도록 post라는 모델의 특성을 만들어준다. 상위 코드는 title, content, created_at가 있다.
$python manage.py makemigrations second를 입력하면 데이터 베이스와 연동되기 직전의 상태이다.
$python manage.py migrate second를 입력하여 작성해 놓은 models.py와 데이터 베이스를 연동시킨다.
Shell을 이용하면 shell에서 바로 Django 명령어를 사용해서 data를 다룰 수 있다.
$ python manage.py shell을 입력해서 Django shell을 불러온다.
from second.models import Post #model 가져오기
post = Post.objects.create(title='this is title', content='this is content') #입력
post.save() #저장
q.title #this is title
q.content #this is content
상위 코드는 shell 사용 방법이다.