reverse()在调用时抛出AttributeError

时间:2011-06-07 16:29:15

标签: python django

我正在尝试撤消名为blog-home的已命名网址,但无论我尝试什么,它总会抛出AttributeError,其中包含'NoneType' object has no attribute 'rindex'描述。

我已尝试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'

我真的不确定为什么会发生这种情况,特别是因为我已经在使用相同版本的Python和Django的其他项目上成功使用reverse而我在其他任何地方都没有找到任何有关此错误的内容远。

我的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 %})。

1 个答案:

答案 0 :(得分:4)

不要这样做:

url(r'^yadda/$', None)

如果在conf中指定了URL,则必须将其绑定到某个位置。如果您不想绑定它,请不要指定它。

相关问题