JSON View Decorator

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from functools import wraps
from django.http import HttpResponse
from django.utils import simplejson as json

def render_to_json(**jsonargs):
    """
    Renders a JSON response with a given returned instance. Assumes json.dumps() can
    handle the result. The default output uses an indent of 4.
    
    @render_to_json()
    def a_view(request, arg1, argN):
        ...
        return {'x': range(4)}

    @render_to_json(indent=2)
    def a_view2(request):
        ...
        return [1, 2, 3]

    """
    def outer(f):
        @wraps(f)
        def inner_json(request, *args, **kwargs):
            result = f(request, *args, **kwargs)
            r = HttpResponse(mimetype='application/json')
            if result:
                indent = jsonargs.pop('indent', 4)
                r.write(json.dumps(result, indent=indent, **jsonargs))
            else:
                r.write("{}")
            return r
        return inner_json
    return outer

More like this

  1. Extend simplejson to understand closures, functors, generators and iterators by ElfSternberg 4 years ago
  2. Django newforms ExtJS JSON Encoder by davidblewett 4 years, 11 months ago
  3. JSON encode ISO UTC datetime by japerk 4 years, 1 month ago
  4. View to retrieve objects meeting a complex tag query by nathangeffen 2 years, 5 months ago
  5. ModelForm ExtJS JSON Encoder by tian 4 years, 4 months ago

Comments

(Forgotten your password?)