[Django] 변수와 URL

URL 주소가 비슷한게 여러개가 있다면 일일히 쳐야할까...?

urlpatterns = [
    path('articles/1/', ...),
    path('articles/2/', ...),
    path('articles/3/', ...),
    path('articles/4/', ...),
    path('articles/5/', ...),
    ....
]

이런 번거로움을 덜기 위해 URL의 일부에 변수를 포함시키는 기능 = Variable Routing

 

 

 

Variable Routing

URL 일부에 변수를 포함시키는 것
이때, 변수는 view 함수의 인자로 전달 할 수 있다.

 

구조

<path_converter:variable_name>
  • path converter란?
    : URL 변수의 타입을 지정해 줌
    (str, int등 5가지의 타입을 지원)

 

 

쓰는 방법

1. urls.py에서 경로를 추가해준다.

urlpatterns = [ 
    path('hello/str:name/', views.greeting), 
    path('articles/int:num/',views.detail), 
]

url주소에서 <str:name>, <int:num> 부분이 변수, 즉 variable routing이 됨

 

 

2. views.py에서 함수를 정의해 준다.

def greeting(request, name):
    context = {
        'name' : name
    }
    return render(request, 'articles/greeting.html', context)


def detail(request, num):
    context = {
        'num' : num,
    }
    return render(request, 'articles/detail.html',context)

여기서, 함수의 인자로 name과 num을 받을 수 있다.

 

3. greeting.html과 detail.html을 작성해서 결과를 확인할 수 있다.

{% extends "base.html" %}

{% block content %}
    <h1>안녕, {{name}}~!</h1>
{% endblock content %}
{% extends "base.html" %}

{% block content %}
    <h1>여기는 {{num}}번 게시글 페이지입니다.</h1>
{% endblock content %}

greeting
detail

 

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

[Django] Model과 Migrations  (0) 2023.09.14
[Django] App URL  (0) 2023.09.14
[Django] form활용: throw & catch  (1) 2023.09.13
[Django] 요청과 응답(form)  (0) 2023.09.13
[Django] Template 상속  (0) 2023.09.13