From 9f2881deb127593e8e0fa25e978aad9029d7b562 Mon Sep 17 00:00:00 2001
From: Pindi Albert <pindi.albert@gmail.com>
Date: Sun, 4 Oct 2015 10:50:18 -0700
Subject: [PATCH] Fixed #25423 -- Made error message for unknown template tag
 more helpful.

---
 django/template/base.py       |  9 +++++++--
 tests/template_tests/tests.py | 17 ++++++++++++-----
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/django/template/base.py b/django/template/base.py
index a7042adc4a..eb43bb966a 100644
--- a/django/template/base.py
+++ b/django/template/base.py
@@ -553,13 +553,18 @@ class Parser(object):
         if parse_until:
             raise self.error(
                 token,
-                "Invalid block tag on line %d: '%s', expected %s" % (
+                "Invalid block tag on line %d: '%s', expected %s. Did you "
+                "forget to register or load this tag?" % (
                     token.lineno,
                     command,
                     get_text_list(["'%s'" % p for p in parse_until]),
                 ),
             )
-        raise self.error(token, "Invalid block tag on line %d: '%s'" % (token.lineno, command))
+        raise self.error(
+            token,
+            "Invalid block tag on line %d: '%s'. Did you forget to register "
+            "or load this tag?" % (token.lineno, command)
+        )
 
     def unclosed_block_tag(self, parse_until):
         command, token = self.command_stack.pop()
diff --git a/tests/template_tests/tests.py b/tests/template_tests/tests.py
index a6aac5b81a..38d7eaa8bb 100644
--- a/tests/template_tests/tests.py
+++ b/tests/template_tests/tests.py
@@ -68,14 +68,21 @@ class TemplateTests(SimpleTestCase):
         #7876 -- Error messages should include the unexpected block name.
         """
         engine = Engine()
-
-        with self.assertRaises(TemplateSyntaxError) as e:
+        msg = (
+            "Invalid block tag on line 1: 'endblock', expected 'elif', 'else' "
+            "or 'endif'. Did you forget to register or load this tag?"
+        )
+        with self.assertRaisesMessage(TemplateSyntaxError, msg):
             engine.from_string("{% if 1 %}lala{% endblock %}{% endif %}")
 
-        self.assertEqual(
-            e.exception.args[0],
-            "Invalid block tag on line 1: 'endblock', expected 'elif', 'else' or 'endif'",
+    def test_unknown_block_tag(self):
+        engine = Engine()
+        msg = (
+            "Invalid block tag on line 1: 'foobar'. Did you forget to "
+            "register or load this tag?"
         )
+        with self.assertRaisesMessage(TemplateSyntaxError, msg):
+            engine.from_string("lala{% foobar %}")
 
     def test_compile_filter_expression_error(self):
         """