장고, 템플릿 URl 및 아규먼트(쿼리) 이용 예제
글. 수알치 오상문
다음 예제는 URL 링크나 아규먼트(쿼리)를 이용하여 추가 정보를 전달하는 방법을 보여줍니다. 이 예제는 두 가지 방법이 모두 섞여 있습니다. 장고 템플릿 기반이므로 일반적인 URL 링크 구조와 차이가 있습니다.
<a href="{% url 'data:download' data_id=my_id %}?item={{item_name}}&attr={{attr_name}}"> Download </i></a>
이 예제는 다음처럼 url 링크 설정되어 있다고 가정합니다.
from django.urls import path
from . import views
from django.conf.urls import url
from .views import *
app_name = "data"
urlpatterns = [
path('download/<int:data_id>', views.download, name="download"),
// ...
]
1) url 'data:download'
data 앱의 download 링크를 의미합니다. 실제 링크는 '.../data/download' 형식이 됩니다.
2) data_id=myid
app/download/data_id/ 구조로 data.id라는 하위 링크 부분에 추가되는 부분입니다.
예를 들어 my_id 값이 100이라면 '.../data/download/100/ ' url로 적용됩니다.
즉, url 링크 구조로 데이터를 보내어 그 구조에 맞게 분리 작업을 하고 싶을 때 사용할 수 있습니다.
3) ?item={{item_name}}&attr={{attr_name}}
2번은 링크에 데이터를 전달했다면 3번은 아규먼트를 이용하여 데이터를 전달합니다.
이 예제는 item, attr이라는 아규먼트에 장고 템플릿의 변수 값을 얻는 기능을 이용하여 전달합니다.
(item_name, attr_name은 페이지에 request를 요청할 때 보낸 값들입니다.)
4) path('download/<int:data_id>', views.download, name="download")
링크로 전달된 경우에는 url 링크 구조 분석을 통해 처리됩니다.
<int:data_id> 부분은 url 링크 자체에 포함되는 부분을 동적으로 처리합니다.
5) 아규먼트를 이용한 경우에는 url 링크를 처리하는 함수에서 받을 수 있습니다.
추가 링크로 전달된 data_id는 함수 매개변수로 받을 수 있으며, 아규먼트로 받는 경우는 아래 함수를 참고합니다.
@csrf_exempt
def result_download(request, data_id): # 링크로 전달받는 data_id
if request.method == 'GET': # GET 아규먼트로 전달받는 구조처리
item = request.GET.get('item', '-') # 받은 값이 없으면 '-' 값을 사용
attr = request.GET.get('attr', '-') # 받은 값이 없으면 '-' 값을 사용
// ...
'Django' 카테고리의 다른 글
사용자 역할 기반 권한 및 인증 | Django(3.0) (0) | 2023.01.09 |
---|---|
장고(Django) 사용자 관리 - 소셜 로그인 Google (0) | 2023.01.09 |
장고 ORM, 같은 그룹에서 특정 필드 값 기준 추출 (0) | 2022.12.20 |
장고, SQL 이해하고 사용하는 Django ORM (0) | 2022.12.17 |
장고 ORM 가이드, cook book 온라인 사이트 (0) | 2022.12.14 |