reverse () генерирует AttributeError при вызове - PullRequest
2 голосов
/ 07 июня 2011

Я пытаюсь отменить именованный URL с именем 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'

Я действительно не уверен в том, почему это происходит, тем более, что я успешно использовал 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 %}).

1 Ответ

4 голосов
/ 07 июня 2011

Не делай этого:

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

Если вы указали URL в conf, он должен быть привязан к чему-либо Если вы не хотите связывать это, не указывайте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...