티스토리 뷰

728x90
반응형

localhost:8000/question/1

 

이렇게 생긴 URL을 만들고 싶다면

urlpattern을 아래처럼 추가하고 (참고로 앱이름 question입니다)

 

 

APIView를 아래와 같이 작성하면 된다. 

 

 

 

만약 쿼리스트링을 받고 싶다면 어떻게 해야할까?!?! 

 

https://en.wikipedia.org/wiki/Query_string

 

그러니까 이런 url을 제공하고 싶은 것이다!!

 

localhost:8000/family_question/answer?question_id=1 

 

 

url패턴은 기존처럼 유지하고 (참고로 스샷의 앱이름 family_question입니다)

 

 

APIView에서 

request.GET[''키값'] 으로 쿼리스트링의 value를 꺼내오면 된다. 

 

 

잘됨 ☺️

 

 

 

[추가]

 

그리고 저는 특정 쿼리스트링이 있는지를 명시적으로 확인하고 없으면 더 이상 진행안하고 에러보내주도록 처리했는데요, 

request.Get.get['question_id'] 로 쿼리스트링이 없으면 None (파이썬의 널값)을 리턴하도록 할 수 도 있답니다.

(참고: velog.io/@meekukin/TIL-django  / https://stackoverflow.com/questions/51618819/what-does-request-get-getpage-1-means-here)

 

 

 

 

 

Reference

velog.io/@swhybein/django-queryurl-파라미터

 

django - query/url 파라미터

 장고 기능으로 HTTP request안에 request.GET 그리고 request.POST 객체로 쿼리 딕셔너리를 가질 수 있습니다. views.py  뷰 클래스에 위와 같이 설정하고 파라미터 키:밸류 값으로category : 4, query : -pricehttp

velog.io

 

728x90
반응형
댓글
  • 프로필사진 jaegu query string 이 여러개 일때의 처리는 어떻게 하시나요??

    ?a=1&b=2&c=3 이렇게 들어온다하면,

    models.objects.filter 를 저 위 쿼리스트링으로 3번 걸고싶은데, 하드코딩으로 해야될까요.
    아님 다른 방법이 있으신가요?!
    2021.04.30 12:30
  • 프로필사진 사용자 eungding 안녕하세요~~
    filter를 여러번 거신다는 말씀을 정확히 이해를 못했는데ㅠㅠ
    요기 블로그에서 해주신 것 처럼
    https://velog.io/@meekukin/TIL-django

    이런식으로 해주면 되지않을까용?

    a = int(request.GET.get('a',0))
    b = int(request.GET.get('b',0))


    그리고 쿼리스트링 여러개를 꺼내는 좀 더 나이스한 방법이 있나 찾아봤는데,
    보통 이렇게 하나씩(??) 신경쓰면서(??) 꺼내시는 것 같아요!

    https://stackoverflow.com/questions/51618819/what-does-request-get-getpage-1-means-here
    2021.05.05 14:44 신고
댓글쓰기 폼