29. März 2013

Django JSON POST decorator

29. März 2013 - Geschrieben von Martin - Keine Kommentare

Für den Django API Server bei Resigame habe ich einen neuen Decorator geschrieben, welcher Daten im JSON Format, die per POST übermittelt werden automatisch in eine Liste konvertiert und nach „request.POST“ schreibt. Brauchen wir, da die Daten via Backbone.js im JSON Format an die REST API gesendet werden.

resigame-api/decorators.py

from StringIO import StringIO
import json
 
 
def post_json(function):
    def wrap(request, *args, **kwargs):
        if request.raw_post_data is not '':
            try:
                request.POST = json.load(StringIO(request.raw_post_data))
            except:
                print 'invalid json in request.raw_post_data'
        return function(request, *args, **kwargs)
 
    return wrap

Einfach den Decorator @post_json anhängen, wenn z.B. folgende Daten gesendet werden:

{"x":100,"y":100,"name":"Resiiiiiiii"}

Anschließend befindet sich eine Liste mit den Daten in request.POST. Als wenn die Parameter und Werte normal übergeben worden wären.