Python-Django에서 JSON 형식의 데이터를 받는 방법
def someView(request):
username = request.POST.get('username');
......
WEB2.0시대에 만약에 우리가 클라이언트로부터 JSON 형식의 데이터를 전송한다면 위의 방법은 데이터를 정상적으로 읽을 수 없을 것이다.왜 꼭 JSON 형식의 데이터로 FORM 형식의 데이터로 인코딩하지 않느냐는 질문이 있을 수 있다.JSON 형식은 데이터의 차원 구조를 더욱 잘 나타낼 수 있기 때문에 FORM 형식의 데이터는 왕왕 단층일 뿐이다.
다음은 HTML에서 json을 보내고 Django에서 json 데이터를 받는 방법을 보여 줍니다.
HTML에서 JSON 대상을 통해 데이터를 Json 형식으로 서버에 전송할 수 있으며 플레이를 가정할 수 있습니다.html에서 서버에 전송할 내용은 다음과 같습니다.
<script type="text/javascript">
$(function() {
$('#upload').click(function() {
var json_obj = {
username: $('#username').val(),
password: $('#password').val(),
datas: [
{
game_id: $('#datas1').val(),
level: $('#level1').val()
},
{
game_id: $('#datas2').val(),
level: $('#level2').val()
}
]
}; //JSON
var json_str = JSON.stringify(json_obj); // JSON JSON
$.post("/datasave", json_str, callback, "json");
})
function callback(json){
$('#response').html('code:'+json['status']['code'] + "\tmessage:" + json['status']['message']);
}
})
</script>
위 코드에서 데이터는/datasave로 전송되며, Django에서 보기 방법은 Request를 사용합니다.POST에서 데이터를 읽습니다. 얻은 것은 모두 None입니다. 이럴 때는 Request를 사용해야 합니다.raw_post_데이터, 그리고 단순json을 빌려 사전 dict 데이터 형식으로 변환한 다음에 사용은 다음과 같다.
def datasave(request):
dict = {}
info = 'Data log save success'
try:
if request.method == 'POST':
req = simplejson.loads(request.raw_post_data)
username = req['username']
password = req['password']
datas = req['datas']
game_id1 = datas[0]['game_id']
except:
import sys
info = "%s || %s" % (sys.exc_info()[0], sys.exc_info()[1])
dict['message']=info
dict['create_at']=str(ctime())
json=simplejson.dumps(dict)
return HttpResponse(json)
request.raw_post_데이터는 클라이언트에서 보내온 원시 데이터를 표시하고 순수한 문자열을 위해
simplejson
의loads
방법을 통해 사전 데이터 형식req로 변환합니다.위의 코드는 HTML이 아닌 JSON 형식으로 응답하는 방법을 보여 주었다. 즉 simplejson
방법으로 사전 데이터 dict를 문자열 형식으로 서열화하고 Http Response를 통해 되돌아오는 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.