Opened 18 years ago
Last modified 18 years ago
#4319 closed
urlresolvers.RegexURLPattern._get_callback doesn't handle ValueError — at Initial Version
Reported by: | Owned by: | Adrian Holovaty | |
---|---|---|---|
Component: | Core (Other) | Version: | dev |
Severity: | Keywords: | url resolver _get_callback | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
It seems import raises a ValueError if the module name is empty. This can occur in _get_callback and isn't handled properly:
Using a named URL pattern "blog-post" in a permalink-decorated get_absolute_url method causes the exception detailed below.
Switching the name to "blog.post" instead fools the reverse functions into allowing it because _get_callback receives a non-empty module name.
Traceback (most recent call last):
File "d:\python25\Lib\site-packages\django\template\init.py" in render_node
- result = node.render(context)
File "d:\python25\Lib\site-packages\django\template\defaulttags.py" in render
- nodelist.append(node.render(context))
File "d:\python25\Lib\site-packages\django\template\init.py" in render
- output = self.filter_expression.resolve(context)
File "d:\python25\Lib\site-packages\django\template\init.py" in resolve
- obj = resolve_variable(self.var, context)
File "d:\python25\Lib\site-packages\django\template\init.py" in resolve_variable
- current = current()
File "d:\python25\Lib\site-packages\django\utils\functional.py" in _curried
- return _curried_func(*(args+moreargs), dict(kwargs, morekwargs))
File "d:\python25\Lib\site-packages\django\db\models\base.py" in get_absolute_url
- return settings.ABSOLUTE_URL_OVERRIDES.get('%s.%s' % (opts.app_label, opts.module_name), func)(self)
File "d:\python25\Lib\site-packages\django\db\models\init.py" in inner
- return reverse(bits[0], None, *bits[1:3])
File "d:\python25\Lib\site-packages\django\core\urlresolvers.py" in reverse
- return '/' + resolver.reverse(viewname, *args, kwargs)
File "d:\python25\Lib\site-packages\django\core\urlresolvers.py" in reverse
- return pattern.reverse_helper(lookup_view, *args, kwargs)
File "d:\python25\Lib\site-packages\django\core\urlresolvers.py" in reverse_helper
- sub_match = self.reverse(lookup_view, *args, kwargs)
File "d:\python25\Lib\site-packages\django\core\urlresolvers.py" in reverse
- elif pattern.callback == lookup_view or pattern.name == lookup_view:
File "d:\python25\Lib\site-packages\django\core\urlresolvers.py" in _get_callback
- self._callback = getattr(import(mod_name, {}, {}, []), func_name)
ValueError at /blog/articles/
Empty module name