본 포스팅은 생활코딩 이고잉님의 강의 'Python Django Web Framework', Django Documentation을 토대로 작성된 포스팅입니다.
지난 번에 urlpattern에 따라 view의 여러 function으로 넘겨주는 작업을 했었다.
from django.contrib import admin
from django.urls import path, include
from myapp import views
urlpatterns = [
# 사용자가 아무것도 없는 경로로 들어왔을 때
path('', views.index),
path('create/', views.create),
path('read/1/', views.read)
]
read 뒤에 붙은 저 번호.. 왜 붙였을까?
그리고 홈페이지에 여러 개 게시글을 만든다면, 그 때마다 저렇게 path를 하나씩 지정해줘야 할까?
그 짓을 안하려고 웹 프레임워크를 쓰는 것이다!!
이번에 만들어볼 것은 read url 뒤에 붙는 번호를 가변적으로 처리하고, 그에 따라 다른 텍스트를 출력하도록 하는 function이다.
- read/[num] url로 접속 -> Read![num] 텍스트를 띄워주기
가변인자를 받아보자
우선 urls.py부터 수정해보자.
<변수 이름> 형태로 urlpath 내에 가변 인자를 추가할 수 있다.
# myapp/urls.py
from django.contrib import admin
from django.urls import path, include
from myapp import views
urlpatterns = [
# 사용자가 아무것도 없는 경로로 들어왔을 때
path('', views.index),
path('create/', views.create),
path('read/<id>/', views.read)
]
이제 가변인자에 따라 텍스트 변화를 주기 위해서 view를 작성해주면 된다.
url을 통해 전달된 <id>를 request 다음 인자로 추가해주자.
# myapp/views.py
from django.shortcuts import render, HttpResponse
# Create your views here.
# 첫 번째 파라미터 인자로 요청과 관련된 여러 정보가 있는 객체를 전달해주어야 함 (=관습적으로 request를 쓴다)
def index(request):
return HttpResponse('Welcome') # 인자로 전송하고 싶은 값을 적어주면 된다!
def create(request):
return HttpResponse('Create')
def read(request, id):
return HttpResponse('Read!' + id) # id 가변인자를 추가해보자!
다시 웹페이지를 동작시키면?
read 뒤에 붙은 id 변수에 따라서 텍스트가 변경되는 것을 볼 수 있다.
위에서 배운 내용을 응용해서 접속이 들어올 때마다 랜덤한 실수를 띄워주는 웹을 만들어보자.
# myapp/views.py
from django.shortcuts import render, HttpResponse
import random
# Create your views here.
# 첫 번째 파라미터 인자로 요청과 관련된 여러 정보가 있는 객체를 전달해주어야 함 (=관습적으로 request를 쓴다)
def index(request):
return HttpResponse('<h1>Random</h1>' + str(random.random())) # 인자로 전송하고 싶은 값을 적어주면 된다!
def create(request):
return HttpResponse('Create')
def read(request, id):
return HttpResponse('Read!' + id) # id 가변인자를 추가해보자!
reload 할 때마다 랜덤하게 찍히는 숫자가 바뀌는 것을 알 수 있는데, 서버 실행 시마다 random.random() 함수가 재실행되어 새로운 난수를 생성하기 때문이다.
이렇듯 Static Web server에서는 구현하기 힘든 실시간 변화를 반영할 수 있는 것이 바로 우리가 사용하는 Dynamic Web Application Server Django이다.
내용 정리
- 사용자가 read/1 url로 접속하면 다음 path와 매칭된다
- 작성되어 있는 url대로, 작업을 myapp/urls.py로 위임한다
- myapp/urls.py에서는 read/<id>/와 매칭되고, 여기에 할당되어 있는 views.py의 function인 read()로 넘어가게 된다
- views.py 에서 read() 가 동작하고, return값인 'Read!' + [id] 는 HttpResponse 형태로 클라이언트에게 송신된다
참고 자료
https://youtu.be/pbKhn2ten9I?si=NtCIfKXs9RozEzaQ
https://opentutorials.org/course/4886/31111
https://docs.djangoproject.com/ko/5.0/
Django
The web framework for perfectionists with deadlines.
docs.djangoproject.com
'Django' 카테고리의 다른 글
04. 홈페이지 기능 구현 - Read (1) | 2024.02.15 |
---|---|
02. App 만들기 (1) (0) | 2024.02.15 |
01. Django 설치, Django project의 구성 요소들 (0) | 2024.02.15 |