summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/core/defaultfilters.py16
1 files changed, 3 insertions, 13 deletions
diff --git a/django/core/defaultfilters.py b/django/core/defaultfilters.py
index ff55219f0b..eb3ec11c95 100644
--- a/django/core/defaultfilters.py
+++ b/django/core/defaultfilters.py
@@ -245,19 +245,9 @@ def slice_(value, arg):
for an introduction.
"""
try:
- start, finish = arg.split(':')
- except ValueError: # unpack list of wrong size
- return value # fail silently but nicely
- try:
- if start and finish:
- return value[int(start):int(finish)]
- if start:
- return value[int(start):]
- if finish:
- return value[:int(finish)]
- except TypeError:
- pass
- return value
+ return value[slice(*[x and int(x) or None for x in arg.split(':')])]
+ except (ValueError, TypeError):
+ return value # Fail silently.
def unordered_list(value, _):
"""