Django 동적 URL 패턴(Dynamic Path Segments) - 3

2023. 2. 25. 23:34·Develop/Django
728x90
SMALL

앞서 FastAPI의 라우팅과 같은 방식으로 간단히 다뤘다.(타 폴더의 값을 메인 폴더에서 읽음)
다만 하드 코딩된 URL 패턴을 사용했고, 이는 확장성이 좋지 않다.(많은 페이지가 있다면 모든 경로를 추가해야 함)
그래서 하나의 경로 패턴으로 많은 페이지를 처리할 수 있도록 해야 한다.


Django에서 동적 URL 패턴을 위해서 Angle Brackets: '<>'을 사용한다.

 

1) 기존의 코드를 동적 URL 패턴으로 바꿔보자. 우선 views.py을 수정한다.

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseNotFound

# Create your views here.


def monthly_challenge(request, month):
    if month == "january":
        response = "Django is fun!"
    elif month == "february":
        response = "Coding for at least 1 hour every day!"
    elif month == "march":
        response = "Hard Coding is hard"
    else:
        return HttpResponseNotFound("Not month")
    return HttpResponse(response)

기존의 3개 함수들은 삭제되고 하나의 함수에서 매개변수 값으로 호출을 한다.
HttpResponseNotFound는 요청받은 값이 없을 때 지정한 문구를 되돌려준다. 

 

 

2) urls.py 파일에서도 하드코딩된 URL을 삭제하고 하나의 URL만 생성한다.

from django.urls import path

from . import views


urlpatterns = [
    path("<month>", views.monthly_challenge)
]

url에서 Angle Brackets: '<>'가 적용이 된다.

 

 

3) Django를 실행하고 확인했을 때 페이지가 잘 나오는 것을 확인할 수 있다.

http://127.0.0.1:8000/challenges/january

http://127.0.0.1:8000/challenges/february

http://127.0.0.1:8000/challenges/march

 

4) 흐름을 다시 한번 정리를 하자면

폴더: monthly_challenges(프로젝트) url >> challenges(앱) url >> challenges(앱) view (매개변수)

url: http://127.0.0.1:8000/challenges >> <month> >> january or february or march

 

month의 넣는 값에 따라 페이지를 가져올 수 있다.

728x90
SMALL
저작자표시 비영리 (새창열림)

'Develop > Django' 카테고리의 다른 글

Django 리다이렉트(Redirect) - 6  (0) 2023.02.26
Django 동적 URL 패턴 로직 추가- 5  (0) 2023.02.26
Django 경로 변환(타입 추가) - 4  (0) 2023.02.26
Django View & URL 다뤄보기 - 2  (0) 2023.02.25
Django 시작하기(생성 명령어, Setup 연습) - 1  (0) 2023.02.19
'Develop/Django' 카테고리의 다른 글
  • Django 동적 URL 패턴 로직 추가- 5
  • Django 경로 변환(타입 추가) - 4
  • Django View & URL 다뤄보기 - 2
  • Django 시작하기(생성 명령어, Setup 연습) - 1
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
Django 동적 URL 패턴(Dynamic Path Segments) - 3
상단으로

티스토리툴바