httpgetargs.py 925 B

123456789101112131415161718192021222324252627
  1. from django import template
  2. #import urllib,urlparse
  3. from django.utils.http import urlencode
  4. register = template.Library()
  5. class HttpGetArgsAddOne(template.Node):
  6. def __init__(self, cname,cvalue):
  7. self.cname = cname
  8. self.cvalue = cvalue
  9. def render(self, context):
  10. dsrc=context['request'].GET.dict()
  11. value=self.cvalue.resolve(context, True)
  12. name=self.cname.resolve(context, True)
  13. dopt=dict([(name,value)])
  14. dsrc.update(dopt)
  15. return urlencode(dsrc)
  16. @register.tag(name="HttpGetArgsAddOne")
  17. def do_HttpGetArgsAddOne(parser, token):
  18. try:
  19. tag_name,name,value = token.split_contents()
  20. except ValueError:
  21. msg = '%r tag requires 2 arguments' % token.split_contents()[0]
  22. raise template.TemplateSyntaxError(msg)
  23. cvalue=parser.compile_filter(value)
  24. cname=parser.compile_filter(name)
  25. return HttpGetArgsAddOne(cname,cvalue)