Django:位于 /'myapp' 的 NoReverseMatch 不是注册的命名空间

Dja*_*bie 5 python django django-forms django-views

我在模板渲染过程中遇到此错误。我想要做的是允许用户上传一个 csv 然后将数据处理成模型。

第 109 行的错误“myapp”不是注册的命名空间

这是我的第 109 行代码

<form action="{% url "myapp:upload_csv" %}" method="POST" enctype="multipart/form-data" class="form-horizontal"> 
Run Code Online (Sandbox Code Playgroud)

mysite 中的 urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'', include('anomaly.urls')),
]
Run Code Online (Sandbox Code Playgroud)

urls.py 异常

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^upload/csv/$', views.upload_csv, name='upload_csv'),
]
Run Code Online (Sandbox Code Playgroud)

小智 5


在 mysite 中尝试这个urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('anomaly.urls',namespace='anomaly'))
Run Code Online (Sandbox Code Playgroud)

要使用命名空间限定 URL 名称,请使用语法“namespace:name”

<form action="{% url 'anomaly:upload_csv' %}" method="POST" enctype="multipart/form-data" class="form-horizontal"> 
Run Code Online (Sandbox Code Playgroud)


Sam*_*Sam 5

看来您已经切换到 Django 2.0 这是新版本 Django 包含的更改之一。
转到您的应用程序异常的 urls.py 并添加app_name = "anomaly". 所以你的 urls.py 文件会像

    app_name = "anomaly"

    urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^upload/csv/$', views.upload_csv, name='upload_csv'),
]
Run Code Online (Sandbox Code Playgroud)