2013-06-17 4 views
3

장고에서보기로 POST 중입니다. POST 본문에는 다음 형식의 데이터가 포함올바른 POST 본문 형식입니까?

{ 
    'Service' : 'API' 
} 

그리고 내보기에이 일을하고있다 :

args = request.POST 
service = args.get('Service', '').strip() 

그러나 service 내가 PDB 사용 ''

request.POST처럼 그대로 나온다 이 :

<QueryDict: {u"{\n 'Service' : 'API'\n}": [u'']}> 

그 이유는 service''이되므로 dict-in-a-dict가되었습니다. 나는이 일이 일어나기로되어 있는지 알고 싶습니까? [u'']은 무엇입니까? 어디에서 몸에 추가 될까요? 그것이 일어날 일이라면, 나가기 위해 시체를 파싱하는 방법은 무엇입니까 Service?

+0

은 전체 POST Dict입니까? DICT를 얻으려면'request.POST.copy()'명령을 사용하여 정확히 정확한 사전을 얻을 수 있습니다. 또한 코드를 엉망으로 만드는 뭔가가 있습니다. '{\ n'서비스 ':'API '\ n}'이 (가) 키로 평가됩니다. – karthikr

+0

정보를보기에 어떻게 게시하고 있습니까? 템플릿을 통해? 조금 설명해 주시겠습니까? –

+0

@karthikryes. 내가 게시하지 않을 다른 분야가있는 것처럼. 그렇다면 어떻게해야 요청에서'\ n'을 없앨 수 있습니까? 나는'\ n이 어떤 식 으로든 포함되도록 POST 할 때? '라고 말합니다. –

답변

1

당신이 알고있는 형식 (multipart/form-data 같은)를 사용하여 대 (JSON-RPC와 같은 것들에 대한 공통) 같은 문자열을 게시하는 경우, 당신은 (보기에)이 사용할 수 있습니다 :

def post(self, request, *args, **kwargs): 
    body = request.body # This is your string 
    data = json.loads(body) 
    service = data['Service'] 

이것은 유효한 JSON 데이터를 게시하는 프론트 엔드 코드를 전제로합니다. 그렇지 않으면 자신의 장치에 덜 표준적인 것을 디코딩 할 수 있습니다 (예 : 유효한 JSON이 아닌 작은 따옴표 사용). JSON.stringify(my_obj)을 사용하여 JavaScript 객체를 JSON으로 인코딩 한 다음 해당 값을 게시하십시오.

+0

REST 클라이언트 사용을 중단했습니다. 요청 모듈을 사용하여 데이터를 게시하는 스크립트를 작성했습니다. 그것의 일 벌금.:) –

+1

훌륭하고 좋은 아이디어 - 요청은 훌륭한 라이브러리입니다. – orokusaki