Commit 173aa519 authored by Baptiste Mispelon's avatar Baptiste Mispelon
Browse files

Fixed #21435 -- Improved error message when urlconf is empty.

The new error message now hints that the most likely issue
is a circular import.

Thanks to trac user elena for the report and to
bpeschier for the original patch.
parent d399731b
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -346,11 +346,17 @@ class RegexURLResolver(LocaleRegexProvider):

    @property
    def url_patterns(self):
        # urlconf_module might be a valid set of patterns, so we default to it
        patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
        try:
            iter(patterns)
        except TypeError:
            raise ImproperlyConfigured("The included urlconf %s doesn't have any patterns in it" % self.urlconf_name)
            msg = (
                "The included urlconf '{name}' does not appear to have any "
                "patterns in it. If you see valid patterns in the file then "
                "the issue is probably caused by a circular import."
            )
            raise ImproperlyConfigured(msg.format(name=self.urlconf_name))
        return patterns

    def _resolve_special(self, view_type):
+4 −2
Original line number Diff line number Diff line
@@ -161,8 +161,10 @@ class NoURLPatternsTests(TestCase):
        resolver = RegexURLResolver(r'^$', self.urls)

        self.assertRaisesMessage(ImproperlyConfigured,
            "The included urlconf urlpatterns_reverse.no_urls "
            "doesn't have any patterns in it", getattr, resolver, 'url_patterns')
            "The included urlconf 'urlpatterns_reverse.no_urls' does not "
            "appear to have any patterns in it. If you see valid patterns in "
            "the file then the issue is probably caused by a circular import.",
            getattr, resolver, 'url_patterns')


class URLPatternReverse(TestCase):