TIL no 27 Django basic 2
1. url mapping
Django basic 1에서 사용했던 프로젝트를 그대로 사용할 것이다. basic 1에서도 동일하게 url mapping을 했지만 좀 더 많은 view 작성해서 url과 mapping 해볼 것이다.
- 다중 View 만들기
일단 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/
주소창에 위 주소를 입력해보면 작성된 코드가 잘 작동되는 학인할 수 있다.
2. path parameter
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메서드에 인자로 넘겨준다.
3. model
모델은 정보들을 저장하기 위해 사용하는 개념이다. 데이터 베이스가 알아들을수 있도록 변수를 지정해서 데이터 베이스와 연동하여 데이터를 처리한다.
- models.py
새로운 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가 있다.
- makemigrations
$python manage.py makemigrations second를 입력하면 데이터 베이스와 연동되기 직전의 상태이다.
- migrate
$python manage.py migrate second를 입력하여 작성해 놓은 models.py와 데이터 베이스를 연동시킨다.
4. shell
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 사용 방법이다.
Author And Source
이 문제에 관하여(TIL no 27 Django basic 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@baik9261/TIL-no-27-Django-basic-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)