Django 에서 인자 가 져 오기 (경로, 조회, 요청 헤더, 요청 체)
URL , /weather/shanghai/2018, ;
(query string), key1=value1&key2=value2;
(body) , 、json、xml;
http (header) 。
1. URL 에서 인자 가 져 오기
경로 URL 을 정의 할 때 정규 표현 식 에서 파 라 메 터 를 추출 하 는 방법 으로 URL 에서 요청 파 라 메 터 를 가 져 올 수 있 습 니 다. Django 는 추출 한 파 라 메 터 를 보기 의 전송 매개 변수 에 직접 전달 합 니 다.
1. 이름 없 는 매개 변 수 는 정의 순서에 따라 전달
메모: 매개 변수 가 가 져 온 순서 와 url 의 매개 변수 위치 가 일일이 대응 하여 교환 할 수 없습니다.
url(r'^users/([a-z]+)/(\d{4})/$', views.get_user),
def get_user(request, name, ID):
print('name=%s' % name)
print('id=%s' % id)
return HttpResponse('OK')
1.2 이름 매개 변 수 는 이름 으로 전달
메모: 경로 에서 매개 변수의 이름 을 지정 하면 name 에서 매개 변 수 를 받 을 때 경로 에서 지정 한 매개 변수 이름 을 사용 해 야 합 니 다. 다른 이름 으로 바 꿀 수 없습니다. 이때 두 매개 변수 위 치 는 바 꿀 수 있 습 니 다.
url(r'^users/(?P[a-z]+)/(?P\d{4})/$', views.users),
def weather(request, name, id):
print('name=%s' % name)
print('id=%s' % id)
return HttpResponse('OK')
2. 요청 경로 의 검색 문자열 인자 (예: k1 = v1 & k2 = v2) 를 가 져 오 면 request. GET 속성 을 통 해 QueryDict 대상 을 되 돌려 줍 니 다.
무엇이 Query Dict 대상 입 니까?
django. http. QueryDict 에 정의
HttpRequest 대상 의 속성 GET, POST 는 모두 QueryDict 형식의 대상 입 니 다.
python 사전 과 달리 QueryDict 형식의 대상 은 같은 키 에 여러 개의 값 이 있 는 경 우 를 처리 합 니 다.
2.1 방법 get (): 키 에 따라 값 을 얻는다.
dict.get('key',value)==> : dict['key']
2.2 방법 getlist (): 키 에 따라 값 을 얻 고 목록 으로 값 을 되 돌려 주 며 지정 한 키 의 모든 값 을 얻 을 수 있 습 니 다.
키 가 존재 하지 않 으 면 빈 목록 [] 으로 돌아 가 기본 값 을 설정 하여 후속 처 리 를 할 수 있 습 니 다.
dict.getlist(' ', )
2.3 매개 변수 인 스 턴 스 가 져 오기
접근 경로: / user / qs /? a = 1 & b = 2 & a = 3
메모: 검색 문자열 은 요청 방식, 클 라 이언 트 GET, POST 방식 의 요청 을 구분 하지 않 고 request. GET 를 통 해 요청 한 검색 문자열 데 이 터 를 가 져 올 수 있 습 니 다.
url(r'^qs/$',views.get_value,name='g_v'),
def get_value(request):
a = request.GET.get('a') #3
b = request.GET.get('b') #2
num_list = request.GET.getlist('a') #['1','3']
print(a)
print(b)
print(num_list)
return HttpResponse(reverse('user:get_value'))
3. 요청 체 의 인자
3.1 폼 데이터 획득
request. POST 를 통 해 가 져 오기
주의: Django 는 기본적으로 CSRF 보 호 를 열 었 습 니 다. 상기 요청 방식 에 대해 CSRF 보호 검증 을 실시 할 것 입 니 다. 테스트 를 개발 할 때 CSRF 보호 체 제 를 닫 을 수 있 습 니 다. 방법 은 settings. py 파일 에 CSRF 중간 부품 을 주석 하 는 것 입 니 다.
url(r'^getbody/$',views.get_body),
def get_body(request):
form_data = request.POST.get('c')
print(form_data)
return HttpResponse(form_data)
3.2 비 폼 데이터 획득
폼 형식 이 아 닌 요청 체 데 이 터 는 Django 가 자동 으로 해석 할 수 없 으 며, request. body 속성 을 통 해 가장 원시 적 인 요청 체 데 이 터 를 가 져 와 요청 체 형식 (JSON, XML 등) 에 따라 스스로 해석 할 수 있 습 니 다.request. body bytes 형식 되 돌리 기
import json
url(r'^getjson/$',views.get_body_json),
def get_body_json(request):
#
json_str = request.body
print(json_str) # b'{
"f":200,
"d":300
}'\
# , json
json_str = json_str.decode()
print(json_str) # {"f":200,"d":300}
# json
json_data = json.loads(json_str)
print(json_data) # {'f': 200, 'd': 300}
# json ,
print(json_data['d']) # 300
print(json_data['f']) # 200
return HttpResponse('ok')
4. 예 를 들 어 Django 가 http 요청 헤더 내용 가 져 오기
view 함수 로 전 달 된 reuqest 는 request. META. get ("header key") 을 사용 하여 가 져 옵 니 다.
주의:
header key 는 대문자 로 써 야 합 니 다. 접 두 사 는 "HTTP" 여야 합 니 다. 뒤에 연결 문자 가 가로줄 "-" 이면 밑줄 "" 로 바 꿔 야 합 니 다.예 를 들 어 헤더 의 키 는 api 입 니 다.auth, 그러면 Django 에서 request. META. get ("HTTP API AUTH") 을 사용 하여 요청 헤더 의 데 이 터 를 가 져 와 야 합 니 다.
5. 기타 상용 HttpRequest 대상 속성
request. method 요청 방식
request. path 요청 경로
request. user 가 요청 한 사용자 대상
request. FILES 사전 과 유사 한 대상 으로 모든 업로드 파일 을 포함 합 니 다.
request. encoding 은 요청 한 페이지 의 전체 경 로 를 표시 하 는 문자열 입 니 다. 도 메 인 이름과 인자 부분 은 포함 되 지 않 습 니 다.
url(r'^otherattr/$', views.other_attr),
def other_attr(request):
print(request.method) # POST
print(request.path) # /user/otherattr/
print(request.encoding) # None: , utf-8, ,
# , encoding 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.