#process a dict and remove by default the 'request' key cleandict = lambda dlist, ignore = ['request'] : dict((key, val) for key, val in dlist.items() if key not in ignore) from django.shortcuts import render_to_response from django.http import HttpResponse #render the template - assume a html format def render_template(func): '''ensure the view using this has the template name matching it''' def render(*args, **kwargs): view_response = func(*args, **kwargs) if isinstance(view_response, HttpResponse): return view_response return render_to_response(func.__name__ + '.html', cleandict(view_response)) return render Example code: @render_template def myview(request): variables = {'Hello': 'World', 'Monty' : 'Python'} if request.POST: return HttpResponseRedirect('/somewhere/') return locals()