Django에서 GET 요청 값을 가져오는 방법
Django에서 GET 요청 값을 가져오는 방법
request.GET 객체 사용
request.GET
객체는 GET 요청으로 전송된 모든 데이터를 딕셔너리 형태로 저장합니다. 딕셔너리 키는 URL 쿼리 매개변수 이름이고 값은 해당 매개변수 값입니다.
예를 들어, 다음 URL을 사용하여 GET 요청을 보낸다고 가정해 보겠습니다.
/my-view/?name=John&age=30
이 경우 request.GET
객체는 다음과 같습니다.
{'name': 'John', 'age': '30'}
다음 코드는 request.GET
객체를 사용하여 name
및 age
값을 가져오는 방법을 보여줍니다.
def my_view(request):
name = request.GET.get('name')
age = request.GET.get('age')
# ...
URL 패턴에서 캡처 그룹 사용
URL 패턴에서 캡처 그룹을 사용하면 URL 경로의 일부를 변수로 저장할 수 있습니다. 이 변수는 뷰 함수에서 사용할 수 있습니다.
예를 들어, 다음 URL 패턴을 사용한다고 가정해 보겠습니다.
url(r'^my-view/(?P<name>\w+)/(?P<age>\d+)/$', my_view)
이 경우 my_view
함수는 다음 인수를 받습니다.
def my_view(request, name, age):
# ...
def my_view(request, name, age):
# ...
참고:
request.GET
객체는 쿼리 문자열에 포함된 모든 데이터를 저장합니다. 쿼리 문자열은 URL의?
이후에 오는 부분입니다.
예제 코드
# views.py
def my_view(request):
# request.GET 객체 사용
name = request.GET.get('name')
age = request.GET.get('age')
# URL 패턴에서 캡처 그룹 사용
if request.method == 'GET':
name = request.GET['name']
age = request.GET['age']
# ...
# urls.py
urlpatterns = [
path('my-view/', my_view, name='my-view'),
]
이 코드는 다음과 같은 방식으로 작동합니다.
- 사용자가
/my-view/?name=John&age=30
URL로 GET 요청을 보냅니다. my_view
함수는request.GET
객체를 사용하여name
및age
값을 가져옵니다.name
및age
값은 템플릿에 전달됩니다.- 템플릿은
name
및age
값을 출력합니다.
템플릿 예시:
<h1>Hello, {{ name }}!</h1>
<p>Your age is {{ age }}.</p>
실행 방법:
- 프로젝트 폴더에서 다음 명령을 실행하여 서버를 시작합니다.
python manage.py runserver
- 웹 브라우저에서
http://localhost:8000/my-view/?name=John&age=30
URL을 엽니다.
결과:
웹 브라우저는 다음과 같은 출력을 표시합니다.
<h1>Hello, John!</h1>
<p>Your age is 30.</p>
Django에서 GET 요청 값을 가져오는 대체 방법
QueryDict 객체 사용
QueryDict
객체는 쿼리 문자열을 파싱하여 딕셔너리 형태로 저장합니다. request.GET
객체는 QueryDict
객체의 인스턴스입니다.
def my_view(request):
query_dict = request.META['QUERY_STRING']
name = query_dict.get('name')
age = query_dict.get('age')
# ...
parse_qs 함수 사용
parse_qs
함수는 쿼리 문자열을 파싱하여 쿼리 매개변수 목록을 반환합니다.
def my_view(request):
query_params = parse_qs(request.META['QUERY_STRING'])
name = query_params.get('name')[0]
age = query_params.get('age')[0]
# ...
urlparse 모듈 사용
urlparse
모듈은 URL을 파싱하는 함수를 제공합니다.
from urlparse import parse_qs
def my_view(request):
parsed_url = parse_qs(request.META['QUERY_STRING'])
name = parsed_url['name'][0]
age = parsed_url['age'][0]
# ...
urllib 모듈 사용
import urllib
def my_view(request):
parsed_url = urllib.parse.urlparse(request.META['QUERY_STRING'])
name = urllib.parse.parse_qs(parsed_url.query)['name'][0]
age = urllib.parse.parse_qs(parsed_url.query)['age'][0]
# ...
request.GET
객체는 가장 간단하고 편리한 방법입니다.QueryDict
객체는request.GET
객체보다 더 많은 기능을 제공합니다.parse_qs
함수는 쿼리 문자열을 직접 파싱할 때 유용합니다.urlparse
모듈과urllib
모듈은 더 복잡한 경우에 유용합니다.
python django url