我正在尝试使用多个应用程序构建一个Django项目,因此对每个应用程序使用urls.py
。当Django尝试访问视图时遇到NoReverseMatch
错误。
主要 urls.py
:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^intface/', intface),
url(r'^', include("userapp.urls", namespace="userapp")),
]
userapp/urls.py
:
urlpatterns = [
url(r'^user/', TemplateView.as_view(template_name="user.html"))
]
user.html
:
<form method="POST" action="{% url "userapp:user" %}" >
错误:
NoReverseMatch at /user/
Reverse for 'user' not found.
'user' is not a valid view function or pattern name.
请帮忙!
答案 0 :(得分:3)
userapp urls.py(添加名称):
urlpatterns=[
url(r'^user/', TemplateView.as_view(template_name="user.html"), name='user')
]
答案 1 :(得分:1)
<form method="POST" action="{% url "userapp:user" %}" >
在上面的行中,当您说userapp:user
时,它表示命名空间= userapp和url_name = user。
通过在以下行中设置命名空间,您已做了一件事:
url(r'^', include("userapp.urls", namespace="userapp")),
但您还没有在此行中设置url_name:
url(r'^user/', TemplateView.as_view(template_name="user.html"))
因此,请将上一行更改为以下行,以设置网址名称:
url(r'^user/', TemplateView.as_view(template_name="user.html"), name="user")
现在你的错误应该消失。