mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #12992: Adjusted the new template loader code so that the template
file name is correctly reported on the debug page when a template syntax error is raised. git-svn-id: http://code.djangoproject.com/svn/django/trunk@12643 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -87,7 +87,7 @@ ALLOWED_VARIABLE_CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01 | ||||
|  | ||||
| # what to report as the origin for templates that come from non-loader sources | ||||
| # (e.g. strings) | ||||
| UNKNOWN_SOURCE="<unknown source>" | ||||
| UNKNOWN_SOURCE = '<unknown source>' | ||||
|  | ||||
| # match a variable or block tag and capture the entire tag, including start/end delimiters | ||||
| tag_re = re.compile('(%s.*?%s|%s.*?%s|%s.*?%s)' % (re.escape(BLOCK_TAG_START), re.escape(BLOCK_TAG_END), | ||||
|   | ||||
| @@ -12,6 +12,11 @@ | ||||
| # might be shown to the user for debugging purposes, so it should identify where | ||||
| # the template was loaded from. | ||||
| # | ||||
| # A loader may return an already-compiled template instead of the actual | ||||
| # template source. In that case the path returned should be None, since the | ||||
| # path information is associated with the template during the compilation, | ||||
| # which has already been done. | ||||
| # | ||||
| # Each loader should have an "is_usable" attribute set. This is a boolean that | ||||
| # specifies whether the loader can be used in this Python installation. Each | ||||
| # loader is responsible for setting this when it's initialized. | ||||
| @@ -37,9 +42,10 @@ class BaseLoader(object): | ||||
|         return self.load_template(template_name, template_dirs) | ||||
|  | ||||
|     def load_template(self, template_name, template_dirs=None): | ||||
|         source, origin = self.load_template_source(template_name, template_dirs) | ||||
|         template = get_template_from_string(source, name=template_name) | ||||
|         return template, origin | ||||
|         source, display_name = self.load_template_source(template_name, template_dirs) | ||||
|         origin = make_origin(display_name, self.load_template_source, template_name, template_dirs) | ||||
|         template = get_template_from_string(source, origin, template_name) | ||||
|         return template, None | ||||
|  | ||||
|     def load_template_source(self, template_name, template_dirs=None): | ||||
|         """ | ||||
| @@ -66,7 +72,7 @@ class LoaderOrigin(Origin): | ||||
|         return self.loader(self.loadname, self.dirs)[0] | ||||
|  | ||||
| def make_origin(display_name, loader, name, dirs): | ||||
|     if settings.TEMPLATE_DEBUG: | ||||
|     if settings.TEMPLATE_DEBUG and display_name: | ||||
|         return LoaderOrigin(display_name, loader, name, dirs) | ||||
|     else: | ||||
|         return None | ||||
|   | ||||
| @@ -38,8 +38,8 @@ class Loader(BaseLoader): | ||||
|             template, origin = self.find_template(template_name, template_dirs) | ||||
|             if not hasattr(template, 'render'): | ||||
|                 template = get_template_from_string(template, origin, template_name) | ||||
|             self.template_cache[template_name] = (template, origin) | ||||
|         return self.template_cache[template_name] | ||||
|             self.template_cache[template_name] = template | ||||
|         return self.template_cache[template_name], None | ||||
|  | ||||
|     def reset(self): | ||||
|         "Empty the template cache." | ||||
|   | ||||
		Reference in New Issue
	
	Block a user