Code

Ticket #12787: 12787.diff

File 12787.diff, 5.0 KB (added by kmtracey, 4 years ago)
Line 
1Index: django/template/loaders/cached.py
2===================================================================
3--- django/template/loaders/cached.py   (revision 12761)
4+++ django/template/loaders/cached.py   (working copy)
5@@ -37,7 +37,10 @@
6         if template_name not in self.template_cache:
7             template, origin = self.find_template(template_name, template_dirs)
8             if not hasattr(template, 'render'):
9-                template = get_template_from_string(template, origin, template_name)
10+                try:
11+                    template = get_template_from_string(template, origin, template_name)
12+                except TemplateDoesNotExist:
13+                    return template, origin
14             self.template_cache[template_name] = template
15         return self.template_cache[template_name], None
16 
17Index: django/template/loader_tags.py
18===================================================================
19--- django/template/loader_tags.py      (revision 12761)
20+++ django/template/loader_tags.py      (working copy)
21@@ -97,10 +97,7 @@
22             raise TemplateSyntaxError(error_msg)
23         if hasattr(parent, 'render'):
24             return parent # parent is a Template object
25-        try:
26-            return get_template(parent)
27-        except TemplateDoesNotExist:
28-            raise TemplateSyntaxError("Template %r cannot be extended, because it doesn't exist" % parent)
29+        return get_template(parent)
30 
31     def render(self, context):
32         compiled_parent = self.get_parent(context)
33Index: django/template/loader.py
34===================================================================
35--- django/template/loader.py   (revision 12761)
36+++ django/template/loader.py   (working copy)
37@@ -44,8 +44,11 @@
38     def load_template(self, template_name, template_dirs=None):
39         source, display_name = self.load_template_source(template_name, template_dirs)
40         origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)
41-        template = get_template_from_string(source, origin, template_name)
42-        return template, None
43+        try:
44+            template = get_template_from_string(source, origin, template_name)
45+            return template, None
46+        except TemplateDoesNotExist:
47+            return source, display_name
48 
49     def load_template_source(self, template_name, template_dirs=None):
50         """
51Index: tests/regressiontests/views/tests/debug.py
52===================================================================
53--- tests/regressiontests/views/tests/debug.py  (revision 12761)
54+++ tests/regressiontests/views/tests/debug.py  (working copy)
55@@ -49,3 +49,10 @@
56                     "Failed to find 'raise BrokenException' in last frame of traceback, instead found: %s" %
57                         raising_loc)
58 
59+    def test_extends_error(self):
60+        try:
61+            self.client.get(reverse('test_extends'))
62+        except TemplateSyntaxError, e:
63+            self.assertEquals(e.args[0], "Caught TemplateDoesNotExist while rendering: missing.html")
64+
65+
66Index: tests/regressiontests/views/views.py
67===================================================================
68--- tests/regressiontests/views/views.py        (revision 12761)
69+++ tests/regressiontests/views/views.py        (working copy)
70@@ -57,3 +57,7 @@
71     return render_to_response('debug/template_exception.html',
72         {'arg': except_args[int(n)]})
73 
74+def test_extends(request):
75+    return render_to_response('debug/test_extends_error.html')
76+
77+
78Index: tests/regressiontests/views/urls.py
79===================================================================
80--- tests/regressiontests/views/urls.py (revision 12761)
81+++ tests/regressiontests/views/urls.py (working copy)
82@@ -110,4 +110,6 @@
83 urlpatterns += patterns('regressiontests.views.views',
84     url(r'view_exception/(?P<n>\d+)/$', 'view_exception', name='view_exception'),
85     url(r'template_exception/(?P<n>\d+)/$', 'template_exception', name='template_exception'),
86+    url(r'test_extends_error/$', 'test_extends', name='test_extends'),
87+
88 )
89Index: tests/regressiontests/views/templates/debug/test_extends_error.html
90===================================================================
91--- tests/regressiontests/views/templates/debug/test_extends_error.html (revision 0)
92+++ tests/regressiontests/views/templates/debug/test_extends_error.html (revision 0)
93@@ -0,0 +1 @@
94+{% extends "debug/broken_base.html" %}
95
96Property changes on: tests/regressiontests/views/templates/debug/test_extends_error.html
97___________________________________________________________________
98Added: svn:eol-style
99   + native
100
101Index: tests/regressiontests/views/templates/debug/broken_base.html
102===================================================================
103--- tests/regressiontests/views/templates/debug/broken_base.html        (revision 0)
104+++ tests/regressiontests/views/templates/debug/broken_base.html        (revision 0)
105@@ -0,0 +1 @@
106+{% include "missing.html" %}
107
108Property changes on: tests/regressiontests/views/templates/debug/broken_base.html
109___________________________________________________________________
110Added: svn:eol-style
111   + native
112