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.
This commit is contained in:
Baptiste Mispelon 2014-02-22 15:36:49 +01:00
parent d399731bf2
commit 173aa51997
2 changed files with 11 additions and 3 deletions

View File

@ -346,11 +346,17 @@ class RegexURLResolver(LocaleRegexProvider):
@property @property
def url_patterns(self): 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) patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
try: try:
iter(patterns) iter(patterns)
except TypeError: 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 return patterns
def _resolve_special(self, view_type): def _resolve_special(self, view_type):

View File

@ -161,8 +161,10 @@ class NoURLPatternsTests(TestCase):
resolver = RegexURLResolver(r'^$', self.urls) resolver = RegexURLResolver(r'^$', self.urls)
self.assertRaisesMessage(ImproperlyConfigured, self.assertRaisesMessage(ImproperlyConfigured,
"The included urlconf urlpatterns_reverse.no_urls " "The included urlconf 'urlpatterns_reverse.no_urls' does not "
"doesn't have any patterns in it", getattr, resolver, 'url_patterns') "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): class URLPatternReverse(TestCase):