反向Django通用视图,post_保存_重定向;错误';包含的urlconf没有任何模式';

反向Django通用视图,post_保存_重定向;错误';包含的urlconf没有任何模式';,django,django-urls,Django,Django Urls,我确实看到了另一个题为“如何使用django反向通用视图”和“django命名URL,通用视图”的问题,但是我的问题有点不同,我不相信这是一个骗局 代码: 然而,当我运行代码时,我得到一个错误“包含的urlconf bar.url中没有任何模式”。然后,当我将reverse('foo-list')更改为'/bar/foo/'时,它就起作用了。但是,如果在模板中调用{%url foo list%},我会得到正确的url,代码也会正常工作 添加反向也会在相同的URL模式中中断所有URL,并出现相同的

我确实看到了另一个题为“如何使用django反向通用视图”和“django命名URL,通用视图”的问题,但是我的问题有点不同,我不相信这是一个骗局

代码:

然而,当我运行代码时,我得到一个错误“包含的urlconf bar.url中没有任何模式”。然后,当我将reverse('foo-list')更改为'/bar/foo/'时,它就起作用了。但是,如果在模板中调用{%url foo list%},我会得到正确的url,代码也会正常工作

添加反向也会在相同的URL模式中中断所有URL,并出现相同的错误


我在Python2.6上运行Django 1.1

您有一个输入错误-在
post\u save\u redirect
之前没有开始引用。另外,由于您直接引用模块而不是字符串,您是否导入了
list\u detail
create\u update

Edited我怀疑问题来自于在
partners\u add
字典中调用
reverse
。我认为这将导致循环依赖,因为urlconf现在依赖于在导入urlconf时尚未定义的属性


尝试删除该调用(可能是对相关url进行硬编码),看看它是否有效。

一种有效的方法是包装create\u object函数,并使用views.py中的reverse

在URL.py中,代码可能如下所示:

urlpatterns = patterns('',
  url(r'^foo/$', list_detail.object_list, foo_list, name='foo-list'),
  url(r'^foo/add/$','myapp.views.my_create_object', name='foo-add'),
  )
在myapp/views.py中

from django.views.generic.create_update import create_object
from feincms.content.application.models import reverse

from forms import FooForm


def my_create_object(request):
    return create_object(request, form_class=FooForm, 
                         post_save_redirect=reverse("foo-list"))

以下是我在这里发现的问题的解决方案:

我已经粘贴了下面的代码片段,以防该链接消失:


Django 1.4 Alpha包含一个帮助解决此问题的函数。

由于复制、粘贴和编辑我的代码中没有输入错误,因此很抱歉输入错误。是,我已导入列表详细信息并创建更新。如果我只是将反向更改为实际url,所有视图都能正常工作。请参阅上面我的其他评论。链接断开,指向广告域。有人有当前链接吗?下面是
reverse\u lazy
用法的示例:
from django.views.generic.create_update import create_object
from feincms.content.application.models import reverse

from forms import FooForm


def my_create_object(request):
    return create_object(request, form_class=FooForm, 
                         post_save_redirect=reverse("foo-list"))
from django.conf.urls.defaults import *
from django.core.urlresolvers import reverse
from django.utils.functional import lazy
from django.http import HttpResponse

reverse_lazy = lazy(reverse, str)

urlpatterns = patterns('',
url(r'^comehere/', lambda request: HttpResponse('Welcome!'), name='comehere'),
url(r'^$', 'django.views.generic.simple.redirect_to',
{'url': reverse_lazy('comehere')}, name='root')
)