我试图颠倒一个名为blog-home
的命名url,但无论我尝试什么,它总是会抛出一个AttributeError
与描述'NoneType' object has no attribute 'rindex'
。reverse()在调用时抛出AttributeError
我试过reverse("blog-home")
,reverse("blogengine:blog-home")
甚至reverse("admin:index")
和reverse(resolve("/admin/"))
只是为了测试,如果我的代码是问题。
回溯:
Traceback (most recent call last): File "", line 1, in File "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\core\urlresolvers.py", line 368, in reverse app_list = resolver.app_dict[ns] File "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\core\urlresolvers.py", line 241, in _get_app_dict self._populate() File "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\core\urlresolvers.py", line 208, in _populate for name in pattern.reverse_dict: File "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\core\urlresolvers.py", line 229, in _get_reverse_dict self._populate() File "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\core\urlresolvers.py", line 220, in _populate lookups.appendlist(pattern.callback, (bits, p_pattern)) File "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\core\urlresolvers.py", line 169, in _get_callback mod_name, func_name = get_mod_func(self._callback_str) File "C:\Python27\lib\site-packages\django-1.3-py2.7.egg\django\core\urlresolvers.py", line 113, in get_mod_func dot = callback.rindex('.') AttributeError: 'NoneType' object has no attribute 'rindex'
我真的不知道为什么会这样,尤其是我用reverse
成功地在其他项目上使用相同版本的Python和Django的,而且我还没有找到迄今为止任何有关此错误的任何信息。
我的urls.py:
from django.conf.urls.defaults import patterns, include, url from . import views from .models import Post, Tag from django.views.generic import DetailView, ListView urlpatterns = patterns('', url(r'^$', ListView.as_view(queryset=Post.objects.order_by('-pub_date')), name="blog-home"), url(r'^yadda/$', None) )
这是由这个urls.py进口:
from django.conf.urls.defaults import patterns, include, url from django.contrib import admin admin.autodiscover() from django.contrib.sitemaps import FlatPageSitemap class FlatPageSitemap(FlatPageSitemap): changefreq = "daily" sitemaps = { 'flatpages': FlatPageSitemap, } import django.contrib.sitemaps.views from . import blogengine urlpatterns = patterns('', url(r'^', include(blogengine.urls)), url(r'^sitemap\.xml', django.contrib.sitemaps.views.sitemap, {'sitemaps': sitemaps}), url(r'^admin/doc/', include('django.contrib.admindocs.urls')), url(r'^admin/', include(admin.site.urls)), )
我本来打算从Django的模板系统与URL标记使用它({% url blog-home %}
)。
你能告诉我们你的urls.py包含'blog-home'和你正在调用'reverse'方法的代码。显然,有些东西是空的。 – 2011-06-07 16:33:10
我现在只是在调试时从'manage.py shell'交互式shell调用'reverse'。 – 2011-06-07 16:34:56
point @ cx42net正在做的事情是有很多东西影响'reverse'。这可能会扼杀urls.py中的内容或您的某个观点。如何调用'reverse'没有什么问题,所以错误必须在代码中的其他位置。我们需要更多的上下文来进一步帮助您。 – 2011-06-07 16:37:34