2013-06-20 2 views
2

일부 사용자 정의 논리를 실행하기 전에로드 및 유효성 검사를 복사하여 붙여 넣기보다는 재사용하고 싶습니다. 장고보기가 있습니다.Django : 일반보기 옵션 작성

나는 세 가지 방법을 평가하고있어이보기 재사용 만들려면 :

  1. 데코레이터 (안 Djangoish)
  2. 일반보기 방법 (조사)
  3. 클래스 기반의 일반보기 (잔인한의 비트)

추천 이유 및 이유는 무엇입니까?

try: 
    data = json.loads(request.body) 
except: 
    resp = generate_json_response(False, 'validation', 'JSON data cannot be parsed. Please check your data format.') 
    return HttpResponse(resp, mimetype="application/json") 

# Validation 
location = data.get('location', None) 
if location: 
    {custom logic} 

else: 
    # No Location 
    resp = generate_json_response(False, 'validation', 'Missing location id') 
    return HttpResponse(resp, mimetype="application/json") 

resp = generate_json_response(True, None, None) 
return HttpResponse(json.dumps(resp), mimetype="application/json") 

답변

1

당신이 유지 mixin과 클래스 기반 일반보기를 사용하려고 생각하십니까 :

나는 아래보기의 조각을 제공 한? 그런 뭔가 :

class JSONResponseMixin(object): 
    def render_to_response(self, context): 
     return self.get_json_response(json.dumps(context)) 

    def get_json_response(self, content, **httpresponse_kwargs): 
     return http.HttpResponse(content, 
        content_type='application/json', 
        **httpresponse_kwargs) 


class MyView(JSONResponseMixin, SomeView(BaseDetail, BaseUpdate etc..)): 
    pass 

어쩌면 당신의 목적을 위해 일부 JSON-RPC 구현을 사용하는 것이 좋을 것이다.

http://json-rpc.org/

http://www.jsonrpc.org/specification

http://en.wikipedia.org/wiki/JSON-RPC#Implementations

:보세요
관련 문제