장고 URL 추가 및 Views에서 URLconf 요청 응답 처리 방법

2022. 1. 10. 16:04·Django
목차
  1. URL 추가 및  Views 구성 방법
  2. 동적인 방식으로 URL 처리하기

장고 서버를 실행하고 127.0.0.1:8000 URL을 입력하면 초기 페이지가 표시됩니다. 메인 URL뒤에 /challenges/first 와 같은 URL을 추가하고 싶다면 어떻게 할까요?

URL 추가 및  Views 구성 방법

해당 앱 디렉토리에서 urls.py를 생성합니다. 이렇게하면 앱 디렉토리에 urls.py와 프로젝트 메인 디렉토리에 urls.py가 각각 존재하게 됩니다. 이전 포스팅에서 urls.py의 역할은 views.py의 로직을 트리거하는 것이라고 정리했는데요. 다음과 같이 django.urls의 path 함수를 통해 이를 처리할 수 있습니다.

# challenges/urls.py

from django.urls import path
from . import views

urlpatterns = [
 path("first", views.index)
]

path 함수는 두 가지 아규먼트를 받습니다. 첫 번째 아규먼트는 추가하려는 URL입니다. 두 번째 아규먼트는 해당 URL을 통해 실행될 view.py 내 함수입니다. 여기서는 views.py 내의 index 함수(아직 생성하지 않음)로 지정해보겠습니다. 

 

이제 views.py에서 실행될 내용을 설정할 차례입니다. Views.py의 초기 상태는 다음과 같습니다.

from django.shortcuts import render

# Create your views here.

요청과 응답 처리 테스트를 위해 다음과 같이 URL에서 트리거할 함수를 추가해보겠습니다.

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

def index(request):
    return HttpResponse("Response is here!")

다음으로 상위 디렉토리인 mysite의 urls.py로 이동합니다. 초기 상태는 다음과 같습니다.

# mysite/urls.py

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

여기에 새롭게 추가할 URL을 지정해줍니다. django.urls의 incldue함수를 통해 다음과 같이 challenges 내의 모든 url들을 추가할 수 있습니다.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('challenges/', include('challenges.urls'))
]

서버를 실행하고 http://127.0.0.1:8000/challenges/first을 방문하면 앞서 설정했던 "Response is here!"이라는 응답이 HTML 파일로 화면에 출력되는 걸 확인할 수 있습니다.

 

이상을 정리해보자면 다음과 같습니다.

  • 사용자가 http://127.0.0.1:8000/challenges/first를 주소창에 입력
  • 파이썬에서 URLconf 해석(mysite의 urls.py에서 분석) 후 challenges에 해당하는 challenges urls.py로 전달
  • challenges의 urls.py에서 first에 해당하는 views.py의 로직인 index 함수 호출
  • index 함수 리턴 값이 사용자에게 전달됨

동적인 방식으로 URL 처리하기

마지막으로 동일한 앱 URL 아래 여러 URL들이 추가될 경우 이를 동적으로 처리하는 방법에 대해 알아보도록 하겠습니다. challenges urls.py에서 아래와 같이 url 부분을 변경해 줍니다.

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

이후 views.py에서 해당 부분을 아규먼트로 받아 처리하면 동적인 방식으로 URL 처리가 가능합니다.

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

def count(request, count):
    response_message = ''
    if count == 'first':
        response_message = 'This is first message.'
    elif count == 'second':
        response_message = 'This is second message.'
    else:
    	return HttpResponseNotFound("This is not supported count")
    return HttpResponse(response_message)
반응형

'Django' 카테고리의 다른 글

장고 HTTP 리퀘스트 유효성 검사 및 에러 메시지 작성 방법  (0) 2022.01.16
장고 데이터 모델 작성과 CRUD 테스트 방법  (0) 2022.01.11
장고 URL과 Views의 개념 및 역할  (0) 2022.01.10
장고의 작동 방식과 MVT 패턴  (0) 2022.01.10
장고 앱이란? 앱 생성 방법  (0) 2022.01.10
  1. URL 추가 및  Views 구성 방법
  2. 동적인 방식으로 URL 처리하기
'Django' 카테고리의 다른 글
  • 장고 HTTP 리퀘스트 유효성 검사 및 에러 메시지 작성 방법
  • 장고 데이터 모델 작성과 CRUD 테스트 방법
  • 장고 URL과 Views의 개념 및 역할
  • 장고의 작동 방식과 MVT 패턴
휘 Hwi
휘 Hwi
개발자 성장 로그
  • 휘 Hwi
    개발자 로그: 변화를 위한 공간
    휘 Hwi
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • 101 (1)
      • Web | Internet (4)
      • HTML | CSS (4)
      • Python (9)
      • Django (20)
      • Javascript (0)
      • Node.js (0)
      • React (0)
      • React Native (0)
      • Database (1)
      • Git (1)
      • Terminal | Vim (1)
      • Auth | Security (4)
      • AWS (0)
      • Docker (0)
      • Kubernetest (1)
      • Deployment (1)
      • Project (2)
      • TIL (12)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로젝트 회고
    html
    TIL
    깃 오류
    깃 에러 해결
    깃 ssh
    정규 표현식
    파이썬
    HTTP GET 요청
    장고 프로젝트
    요소 크기 설정
    깃
    JWT 인코딩
    함수
    JWT 디코딩
    요소 상대 크기
    HTTP
    JWT
    target="_blank"
    배포
    HTTP POST 요청
    장고 URL
    장고 Views
    css
    새 탭에서 열기
    요소 절대 크기
    깃 퍼블릭 키 등록
    파라미터
    탭내빙
    장고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
휘 Hwi
장고 URL 추가 및 Views에서 URLconf 요청 응답 처리 방법
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.