NoReverseMatch 不是注册的命名空间,django 1.4 问题
NoReverseMatch not a registered namespace, django 1.4 issue
我被迫使用 django 1.4 来使用 neo4j,我收到一条奇怪的消息,指出 "accounts" 不是已注册的命名空间。它肯定是,就在根目录中:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^accounts/', include('accounts.urls', namespace='accounts')),
]
在settings.py中:
INSTALLED_APPS = (
...
'accounts',
)
TEMPLATE_DIRS = ( os.path.join(BASE_DIR, 'templates'), )
在项目根目录中我有 templates/accounts/index.html,这看起来是正确的,因为 template_dirs 指向该文件夹。它特别抱怨:
return render(request, 'accounts/index.html', locals())
它没有返回命名空间,而是返回从模板文件夹开始的模板名称。如果相关,在帐户应用程序(已安装)中,我有:
urls.py-
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('accounts.views',
url(r'^$', 'index', name='index'),
url(r'^register/$', 'register', name='register'),
url(r'^login/$', 'user_login_page', name='login'),
url(r'^logout/$', 'user_logout', name='logout'),
)
为什么有命名空间的东西导致 NoReverseMatch 不是已注册的命名空间?
在 1.4 和其他旧版本中,{% url 'accounts:register' %}
是不允许的...只需要 {% url accounts:register %}
将此添加到您的基础 html。
{% load url from future %}
我被迫使用 django 1.4 来使用 neo4j,我收到一条奇怪的消息,指出 "accounts" 不是已注册的命名空间。它肯定是,就在根目录中:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^accounts/', include('accounts.urls', namespace='accounts')),
]
在settings.py中:
INSTALLED_APPS = (
...
'accounts',
)
TEMPLATE_DIRS = ( os.path.join(BASE_DIR, 'templates'), )
在项目根目录中我有 templates/accounts/index.html,这看起来是正确的,因为 template_dirs 指向该文件夹。它特别抱怨:
return render(request, 'accounts/index.html', locals())
它没有返回命名空间,而是返回从模板文件夹开始的模板名称。如果相关,在帐户应用程序(已安装)中,我有:
urls.py-
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('accounts.views',
url(r'^$', 'index', name='index'),
url(r'^register/$', 'register', name='register'),
url(r'^login/$', 'user_login_page', name='login'),
url(r'^logout/$', 'user_logout', name='logout'),
)
为什么有命名空间的东西导致 NoReverseMatch 不是已注册的命名空间?
在 1.4 和其他旧版本中,{% url 'accounts:register' %}
是不允许的...只需要 {% url accounts:register %}
将此添加到您的基础 html。
{% load url from future %}