我有一个Django视图,我希望在执行某些自定义逻辑之前重复使用而不是复制和粘贴加载和验证。
我正在评估三种方法来使这个视图可重用:
你会推荐什么?为什么?
我提供了以下视图的摘要:
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")
答案 0 :(得分:1)
您是否考虑过使用基于类的通用视图和mixins? 这样的事情:
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实现可能会更好。看看: