장고 기능으로 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
포스트맨
파라미터 탭에 키와 밸류를 넣어줍니다.
[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