Decorador vista ajax

Posted on Fri 21 November 2014 in Programación

Para obligar que una vista django sea llamada sólo mediante llamamas AJAX.

def ajax_required(f):
    """
    AJAX request required decorator
    use it in your views:

    @ajax_required
    def my_view(request):
        ....

    """
    def wrap(request, *args, **kwargs):
        if not request.is_ajax():
            return HttpResponseBadRequest()
        return f(request, *args, **kwargs)
    wrap.__doc__ = f.__doc__
    wrap.__name__ = f.__name__
    return wrap

Un posible ejemplo de uso:

@login_required
@ajax_required
def update_starts(request):
    ...
    return JsonResponse({'result': 'ok'})