2012-08-27 4 views
0

HttpRequest를 특정보기 함수로 라우팅하는 urls.py가 있습니다. 이러한 뷰 함수는 모두 사전 객체를 반환합니다. 어떻게 Json으로 덤프하고 HttpResponse로 감싸는 함수를 통해 이러한 모든 반환 객체를 전달할 수 있습니까?Django python - 함수를 통해 모든 HttpResponses를 넣는 방법

감사

+0

무엇을 시도 했습니까? 반환 HttpResponse에 (json.dumps (responseObject)) 이제 난 그냥 responseObject을 반환하고 다음 단계의 UO – user1614526

+0

는 원래 각 뷰 기능에 내가 있었다 파일? 지금까지 나는 그것을 피할 수 있었다. – user973758

답변

3

은 아마 render_decorator 당신이 원하는합니다. 사용법 :

@render('index.html', ('json',)) 
def my_view(request) 
    #do something 
    return {'key': 'value'} 

아니면 JSON보기를 얻기 위해 딕셔너리를 반환하는 함수에 사용이 snippet.

+0

에서 HttpResponse에 그것을 포장 할을하지만이 후 일부 HTML 렌더링된다 – user973758

+0

실제로이 데코레이터를 사용하여 json 응답을 반환 할 수 없음을 알 수 없음 – user973758

+0

@ user973758 다른 답변에 대한 링크로 내 대답을 업데이트했습니다. 어쨌든 데코레이터를 사용하는 것이 가장 좋은 방법이라고 생각합니다. –

0

Django Middleware을 사용하여 응답 개체를 처리하십시오. 사용자 지정 미들웨어에 process_response 메서드를 구현하십시오. 보기에 의해 생성 된 사전을 사용하여 원하는 json으로 변환하십시오. 그런 다음 실제 응답이 json인지 확인하는 아래 함수로 전달하십시오.

def render_json_response(data): 
    """Sends an HttpResponse with the X-JSON header and the right mimetype.""" 
    resp = HttpResponse(data, mimetype=("application/json;")) 
    resp['X-JSON'] = data 
    return resp 

는 또한 Django Annoying 프로젝트 서브 클래스 HttpResponse에 대한

0

방법이 ajax_request decorator - returns JsonResponse with dict as content 사용할 발견? json을 반환하기 위해 뷰에서 이것을 사용하고 있습니다.

import simplejson 
from django.http import HttpResponse 

class JsonResponse(HttpResponse): 
    def __init__(self, data): 
     super(JsonResponse, self).__init__(
      content=simplejson.dumps(data), 
      mimetype='application/json; charset=utf8')