【问题标题】:django namespace NoReverseMatchdjango 命名空间 NoReverseMatch
【发布时间】:2014-09-18 05:23:28
【问题描述】:

我无法弄清楚我在这里做错了什么。我在 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' 不是已注册的命名空间。我一定遗漏了一些明显的东西,但我无法弄清楚。

【问题讨论】:

    标签: python django python-2.7 django-urls


    【解决方案1】:

    在您的代码中,将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,正常使用更方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      相关资源
      最近更新 更多