Djangoでjsonp
なんかパッケージがあるのかなと思ったけど見当たらず。このくらいは自前で実装するのが普通なのかな?
と思ったらdjango-decoratorsというのがgithubに上がってて、いい感じにつかえるデコレータが定義されていた。
julian-amaya/django-decorators · GitHub
def json_response(func): """ A decorator thats takes a view response and turns it into json. If a callback is added through GET or POST the response is JSONP. """ def decorator(request, *args, **kwargs): objects = func(request, *args, **kwargs) if isinstance(objects, HttpResponse): return objects try: data = simplejson.dumps(objects) if 'callback' in request.REQUEST: # a jsonp response! data = '%s(%s);' % (request.REQUEST['callback'], data) return HttpResponse(data, "text/javascript") except: data = simplejson.dumps(str(objects)) return HttpResponse(data, "application/json") return decorator
ログイン状態をjsonpで返すviewで試してみた。
@json_response def login_status(request): return {'is_authenticated': request.user.is_authenticated()}