mirror of
https://github.com/django/django.git
synced 2025-10-26 07:06:08 +00:00
Added TEMPLATE_STRING_IF_INVALID setting, which specifies what the template system should output in case of invalid variables. Default is empty string (to match current behavior)
git-svn-id: http://code.djangoproject.com/svn/django/trunk@2294 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -57,7 +57,7 @@ times with multiple contexts)
|
||||
import re
|
||||
from inspect import getargspec
|
||||
from django.utils.functional import curry
|
||||
from django.conf.settings import DEFAULT_CHARSET, TEMPLATE_DEBUG
|
||||
from django.conf.settings import DEFAULT_CHARSET, TEMPLATE_DEBUG, TEMPLATE_STRING_IF_INVALID
|
||||
|
||||
__all__ = ('Template','Context','compile_string')
|
||||
|
||||
@@ -181,7 +181,7 @@ class Context:
|
||||
for dict in self.dicts:
|
||||
if dict.has_key(key):
|
||||
return dict[key]
|
||||
return ''
|
||||
return TEMPLATE_STRING_IF_INVALID
|
||||
|
||||
def __delitem__(self, key):
|
||||
"Delete a variable from the current context"
|
||||
@@ -588,7 +588,7 @@ class FilterExpression(object):
|
||||
try:
|
||||
obj = resolve_variable(self.var, context)
|
||||
except VariableDoesNotExist:
|
||||
obj = ''
|
||||
obj = TEMPLATE_STRING_IF_INVALID
|
||||
for func, args in self.filters:
|
||||
arg_vals = []
|
||||
for lookup, arg in args:
|
||||
@@ -657,7 +657,7 @@ def resolve_variable(path, context):
|
||||
try:
|
||||
current = number_type(path)
|
||||
except ValueError:
|
||||
current = ''
|
||||
current = TEMPLATE_STRING_IF_INVALID
|
||||
elif path[0] in ('"', "'") and path[0] == path[-1]:
|
||||
current = path[1:-1]
|
||||
else:
|
||||
@@ -671,16 +671,16 @@ def resolve_variable(path, context):
|
||||
current = getattr(current, bits[0])
|
||||
if callable(current):
|
||||
if getattr(current, 'alters_data', False):
|
||||
current = ''
|
||||
current = TEMPLATE_STRING_IF_INVALID
|
||||
else:
|
||||
try: # method call (assuming no args required)
|
||||
current = current()
|
||||
except SilentVariableFailure:
|
||||
current = ''
|
||||
current = TEMPLATE_STRING_IF_INVALID
|
||||
except TypeError: # arguments *were* required
|
||||
# GOTCHA: This will also catch any TypeError
|
||||
# raised in the function itself.
|
||||
current = '' # invalid method call
|
||||
current = TEMPLATE_STRING_IF_INVALID # invalid method call
|
||||
except (TypeError, AttributeError):
|
||||
try: # list-index lookup
|
||||
current = current[int(bits[0])]
|
||||
|
||||
Reference in New Issue
Block a user