Django:不是注册的命名空间

时间:2014-09-12 20:42:37

标签: python django

我使用Django 1.8

urls.py

urlpatterns = patterns('',

    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'app.views.index', name='index'),
    url(r'^login/$', 'app.views.login', name='login'),
    url(r'^logout/$', 'app.views.logout', name='logout'),
    url(r'^main/$',  'app.views.main', { 'templatename': 'main.html' }, name="main"),
    url(r'^dffr/(?P<page_name>\w+)/$', 'app.views.ajax', name="ajax_page")
)

views.py

@login_required
def ajax(request, page_name, **kwargs):
    # some random context
    ...
    return HttpResponse(return_str)

main.html中

...
{% url 'ajax_page:page_name' %}
...

它让我得到异常类型:NoReverseMatch: &#39; ajax_page&#39;不是注册名称空间

我想在这个urls.py中使用动态链接/ dffr / {some_text} /获取应用 为什么我必须创建并注册新的命名空间并为此任务创建新的urls.py?

1 个答案:

答案 0 :(得分:3)

您需要做的就是:

...
{% url 'ajax_page' page_name='some_page_name' %}
...

网址功能是指您注册的网址名称,而不是您的观看名称。

Django url模板标签文档中解释了这一点:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url