from decorator import decorator @decorator def render_template(func, *args, **kwargs): """ using example: @render_template def view(request, template='abc.html'): slot = "this is a slot" return template, {'slot' : slot} """ request = args[0] _call = func(*args, **kwargs) if isinstance(_call, HttpResponseRedirect): return _call if isinstance(_call, tuple): template, context = _call else: template, context = _call, {} return render_to_response(template, context_instance=RequestContext(request, context))