Guest User

Untitled

a guest
May 27th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. from inspect import getouterframes, currentframe
  4. from copy import copy
  5.  
  6. from django.shortcuts import render_to_response
  7.  
  8. #def render_to_response(*args, **kw):
  9. # print args, kw
  10.  
  11. class Templater(object):
  12. def __init__(self, **kwargs):
  13. self.args = kwargs
  14. self._prev = set()
  15.  
  16. def __enter__(self):
  17. self._prev = set(getouterframes(currentframe())[1][0].f_locals.keys())
  18. return self
  19.  
  20. def __exit__(self, type_, value, traceback):
  21. current = getouterframes(currentframe())[1][0].f_locals
  22. newvars = set(current.keys()) - self._prev
  23. for name in newvars:
  24. if current[name] is not self:
  25. self.args[name] = current[name]
  26.  
  27. def render_to_response(self, template, context_instance=None, mimetype=None):
  28. return render_to_response(template, self.args, context_instance, mimetype)
  29.  
  30. def view(request, arg):
  31. a = 1
  32. with Templater(arg=arg) as t:
  33. b = 2
  34.  
  35. # send {'arg': arg, 'b': 2} to template.html
  36. return t.render_to_response("template.html", context_instance="ctx", mimetype="mime")
Add Comment
Please, Sign In to add comment