#python #django
#python #django
Вопрос:
Я пытаюсь отменить именованный URL-адрес, вызываемый blog-home
но независимо от того, что я пытаюсь, он всегда выдает AttributeError
с описанием 'NoneType' object has no attribute 'rindex'
.
Я пробовал reverse("blog-home")
, reverse("blogengine:blog-home")
и даже reverse("admin:index")
и reverse(resolve("/admin/"))
просто чтобы проверить, был ли проблема в моем коде.
Обратная трассировка:
Обратная трассировка (последний вызов последним): Файл "", строка 1, в Файл "C:Python27libsite-packagesdjango-1.3-py2.7.eggdjangocoreurlresolvers.py ", строка 368, в обратном порядке app_list = resolver.app_dict[ns] Файл "C:Python27libsite-packagesdjango-1.3-py2.7.eggdjangocoreurlresolvers.py ", строка 241, в _get_app_dict self._populate() Файл "C:Python27libsite-packagesdjango-1.3-py2.7.eggdjangocoreurlresolvers.py ", строка 208, в _populate для имени в шаблоне.reverse_dict: Файл "C:Python27libsite-packagesdjango-1.3-py2.7.eggdjangocoreurlresolvers.py ", строка 229, в _get_reverse_dict self._populate() Файл "C:Python27libsite-packagesdjango-1.3-py2.7.eggdjangocoreurlresolvers.py ", строка 220, в _populate поисковые запросы.список приложений(шаблон.обратный вызов, (биты, p_pattern)) Файл "C:Python27libsite-packagesdjango-1.3-py2.7.eggdjangocoreurlresolvers.py ", строка 169, в _get_callback имя_модели, имя_функции = get_mod_func(self._callback_str) Файл "C:Python27libsite-packagesdjango-1.3-py2.7.eggdjangocoreurlresolvers.py ", строка 113, в get_mod_func точка = обратный вызов.rindex('.') Ошибка атрибута: объект 'NoneType' не имеет атрибута 'rindex'
Я действительно не уверен, почему это происходит, тем более, что я успешно использовал reverse
в других проектах с той же версией Python и Django, и я пока ничего не нашел об этой ошибке где-либо еще.
Мой urls.py:
из django.conf.urls.defaults импортируйте шаблоны, включая url От. импорт представлений из .models импортируйте сообщение, тег из django.views.generic import DetailView, ListView urlpatterns = patterns(", url(r '^ $', ListView.as_view(набор запросов=Post.objects.order_by('-pub_date')), name="blog-home"), url(r'^yadda /$', Нет) )
Которая импортируется этим urls.py:
из django.conf.urls.defaults импортируйте шаблоны, включая url от администратора импорта django.contrib admin.autodiscover() из django.contrib.sitemaps импортируйте FlatPageSitemap карта плоских страниц класса (FlatPageSitemap): частота изменений = "ежедневно" sitemaps = { 'flatpages': FlatPageSitemap, } импортируйте django.contrib.sitemaps.views из . импорт blogengine urlpatterns = patterns(", url(r'^', включает(blogengine.urls)), url(r'^sitemap.xml ', django.contrib.sitemaps.views.sitemap, {'sitemaps': карты сайта}), url(r'^admin/doc/', include('django.contrib.admindocs.urls')), url(r'^admin/', включает(admin.site.urls)), )
Изначально я намеревался использовать ее из системы шаблонов Django с тегом url ( {% url blog-home %}
).
Комментарии:
1. не могли бы вы показать нам свой urls.py содержащий
blog-home
и код, который вы используете, где вызываетсяreverse
метод. По-видимому, что-то равно нулю.2. Пока я просто вызываю
reverse
изmanage.py shell
интерактивной оболочки во время отладки.3. Точка зрения @cx42net заключается в том, что есть много вещей, которые влияют
reverse
. Это может быть связано с чем-то в urls.py или в одном из ваших представлений. В том, как вы вызываете, нет ничего плохогоreverse
, поэтому ошибка должна быть где-то еще в вашем коде. Нам нужно больше контекста, чтобы помочь вам в дальнейшем.4. Хорошо, @chrisdpratt, но я не совсем уверен в том, какой именно контекст вам нужен.
Ответ №1:
Не делайте этого:
url(r'^yadda/$', None)
Если вы указываете URL в conf, он должен быть к чему-то привязан. Если вы не хотите его привязывать, не указывайте его.
Комментарии:
1. Вы правы. Примечание для себя: в следующий раз просто не размещайте urlconfigs-заполнители.