django - query/url 파라미터

whybein·2020년 3월 8일
14

django

목록 보기
10/13
post-thumbnail

1. query parameter

 

장고 기능으로 HTTP request안에 request.GET 그리고 request.POST 객체로 쿼리 딕셔너리를 가질 수 있습니다.

 
[views.py]

class SomeView(View):
	def get(self, request):
	category = request.GET.get('category', None)
	query = request.GET.get('query', 'price')

 

뷰 클래스에 위와 같이 설정하고 파라미터 키:밸류 값으로
category : 4, query : -price
httpie 에서는 http -v url category==4 query==-price 로 입력하면

 

장고의 request.GET 에는 <QueryDict: {'category': ['4'], 'query': ['-price']}> 가 들어가게 되고 request 헤더에 엔드포인트 url로 /product?category=4&query=-price가 찍히게 됩니다.

위에서는 .get을 써서 값이 없을 경우에 대비한 경우고 request.GET['category'] 으로만 해도 값을 가져올 수 있습니다.

 

테스트 할 때

파라미터 값으로 넣어줘야 합니다.

  • httpie
    http -v localhost:8000/product category==1 query=-price

  • 포스트맨
    파라미터 탭에 키와 밸류를 넣어줍니다.




2. url parameter

 

[views.py]

class DetailView(View):
    def get(self, request, product_id):
        product_data = Product.objects.filter(id=product_id).values()

[urls.py]

urlpatterns = [
    path('/detail/<int:product_id>', DetailView.as_view())
]

url 파라미터는 뷰클래스 함수에서 self와 request외에 다른 인자를 가지게 되며 그 인자값이 엔드포인트가 됩니다. 위 코드처럼 urls 파일에 반영을 해줘야 합니다.

url 파라미터는 인자가 없으면 안되고 인자값으로 확실한 구분이 가능한 경우(특정 상품의 정보 등)에 주로 사용하며 쿼리 파라미터는 검색과 같이 여러개의 조건이 결합될 때 주로 사용됩니다.

 

테스트 할 때

url에 바로 반영해서 테스트 해주면 됩니다.
localhost:8000/product/1

profile
Back-End Developer

0개의 댓글