1
0
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:
Adrian Holovaty
2006-02-09 00:31:51 +00:00
parent ba8f23424b
commit e0c915ec39
5 changed files with 50 additions and 15 deletions

View File

@@ -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])]