from django import template register = template.Library() @register.filter def sublist(value, arg): """ Usage: list|sublist:"a:b" Returns list[a:b] Accepts ":b" and "a:" shortcuts Note that the double quotes are necessary """ try: arg = str(arg) mylist = list(value) except (ValueError, TypeError): return value if arg.find(':') < 0: return value a, b = arg.split(':')[:2] if a == "": a = None else: try: a = int(a) except ValueError: return value if b == "": b = None else: try: b = int(b) except ValueError: return value return mylist[a:b]