2020-05-08 TIL Query String and URL Parameters

seo_kk·2020년 5월 8일
1

Query String과 URL Parameters

사용자가 페이지 경로를 가지고 어떠한 페이지에 접근을 했을 때, 그러한 페이지 경로에 따라서 다른 정보를 보여준다면, 필요가 없는 정보들은 걸러내고 사용자가 원하는 정보만 가져갈 수 있으며, 더욱더 다채롭게 웹페이지를 구축할 수 있을 것이다.

이처럼 페이지 경로를 백엔드에게 지정할 수 있는다. 이러한 방법은 두가지가 있는데, 바로 Query String과 URL Parameters 이다.

Query String 이란?

쿼리스트링을 손쉽게 알아볼 수 있는 방법은 주소창을 확인하면 알 수 있다.
예를 들어 다음과 같은 주소창이 있다고 생각해 보자.

htp://localhost:8000/product/hot?offset=30&limit=15

이 주소창에서 '?' 의 뒷부분은 모두 Query String이다.

쿼리스트링은 key와 value값으로 나누어져있는데, 이와 같은 주소창에서 알 수 있는 것은 키 값이 offset과 limit이고 이에 따른 value값이 30과 15로 이루어져있다고 볼 수 있는 것이다.

이를 바탕으로 django에서 페이지네이션을 구현한다고 해보자.
우리는 views.py를 다음과 같이 구현해 볼 수 있을 것이다.

class HotImageView(View):
     def get(self, request):

        offset = int(request.GET.get('offset','0'))
        limit = int(request.GET.get('limit','15'))         	

	popular_images=HotImage.objects.all().values([offset:offset+limit]

	return JsonResponse({'all_popular_image':list(popular_images)}, status=200)

이와 같이 request.GET.get 코드로 구현 가능한데, 만약 offset의 값이 들어 오지 않는다면 0으로, limit값이 들어오지 않는다면 15로 지정되게 코드를 구현해 주었다.

URL Parameters 란?

URL파라미터는 프론트엔드에서 보낸 정보를 바탕으로 구현할 수 있다.
코드를 보며 확인해 보겠다.

class SubCategoryView(View):
	def get(self, request, sub_id):
		
		all=ProductCategory.objects.select_related('product').filter(sub_category_id=sub_id)
		all_list = [{"id":a.product.id, "name":a.product.name, "price":a.product.price, "image_url":a.        product.image_url}for a in all]
		
		return JsonResponse({'product':all_list}, status=200)

이 처럼 코드를 작성할 때 request와 함께 다른 변수를 받아준다.
우리는 이러한 변수를 사용하여 urls.py에서 다음과 같은 url을 만들어 줄 수 있을 것이다.

path('/subCategory/<str:sub_id>', SubCategoryView.as_view())

이렇게 url을 통해 정보를 받는 것을 URL Parameters로 볼 수 있겠다.

profile
BackEnd-Developer

0개의 댓글