附带的urlconf manager.urls中没有任何模式

一种解决方案:找到了似乎正常的以下Django代码段 ( http://djangosnippets.org/snippets/2445/

from django.utils.functional import lazy
from django.core.urlresolvers import reverse

#Workaround for using reverse with success_url in class based generic views
#because direct usage of it throws an exception.

reverse_lazy = lambda name=None, *args : lazy(reverse, str)(name, args=args)

显然,在django主干中现在存在 reverse_lazy 函数。


更新:此 错误与我在普通视图内调用reverse有关:

class AddObjView(CreateView):
    form_class = ObjForm
    template_name = 'manager/obj_add.html'
    success_url = reverse('manager-personal_objs')

这是无效的吗?

如果我而不是普通写这样的东西,它会起作用:

def add_obj(request, pk):
    a=reverse('manager-personal-objs')
    return HttpResponse(a)

我有一个包含2的项目 应用程序。 每个应用程序都有其网址和视图。 它们都可以正常工作,但是在管理器应用程序上,一旦我在视图(任何视图)中引用了反向功能,就会收到以下错误: 异常类型:配置不正确 异常值:包含的urlconf manager.urls中没有任何模式

urls文件:

urlpatterns = patterns('',
    url(r'^$', ObjView.as_view(), name='manager-obj'),
    url(r'^add/$', AddObjView.as_view(), name='manager-add_obj'),
    url(r'^personal/$', PersonalObjsView.as_view(), name='manager-personal_objs'),    

异常位置:... site-packages \ django \ core \ urlresolvers.py在_get_url_patterns中 ,第283行

我在整个站点中都收到此错误(编辑:这显然是因为尝试导入manager.urls会导致错误)。 如果删除了include manager.urls,一切将恢复正常。 如果我取消反向通话,一切都很好; 如果我尝试将manager.urls重写为一个简单的版本,它将继续出现错误。

我已经读过很多遍了,似乎找不到任何错误。

edit:root urls.py

# coding=utf8
from django.conf.urls.defaults import patterns, include, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.views.generic.simple import direct_to_template

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Uncomment the admin/doc line below to enable admin documentation:
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),

    # Home Page
    url(r'^$', direct_to_template, {'template': 'home.html'}, name="home"),

    # manager
    url(r'^manager/', include('manager.urls')),

    # writing
    url(r'^writing/', include('writing.urls')),
)

urlpatterns += staticfiles_urlpatterns()

edit2:还应注意,URL模板标记在管理器应用程序中工作正常,而反向调用在我在其他应用程序中运行时有效。 另外,每个URL都有书面工作视图。

22
задан Ricardo B. 26 June 2011 в 18:24
поделиться