我无法弄清楚我在这里做错了什么。我在Ubuntu 14.04上使用Django 1.6.5和Python 2.7.6。我有一个名为research的项目,其中包含一个名为notecards的应用程序。这是我的研究/ urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'research.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^notecards/', include('notecards.urls', namespace='notecards')),
)
以下是notecards / views.py
中的调用def new_note(request):
if request.method == 'GET':
form = NotecardForm()
else:
form = NotecardForm(request.POST)
if form.is_valid():
content = form.cleaned_data['content']
source = form.cleaned_data['source']
page = form.cleaned_data['page']
tags = form.cleaned_data['tags']
return HttpResponseRedirect(reverse('notecards:index', ()))
return render(request, 'notecards/new_note.html', {'form': form,
})
这是我得到的错误:u'notecards'不是注册名称空间。我必须遗漏一些明显的东西,但我无法弄明白。
答案 0 :(得分:2)
在您的代码中,将reverse('notecards:index', ())
更改为reverse('notecards:index')
。 reverse
的签名是
reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None, current_app=None)
您可能会发现urlconf
错误地使用了()
代替args
。
此外,看看django.shortcuts.resolve_url
,它更容易正常使用。