Django表单:NoReverseMatch

时间:2018-01-24 23:29:33

标签: python django web django-forms

获取错误:NoReverseMatch:未找到“post_new”的反向。 'post_new'不是有效的视图函数或模式名称。

我在base.html中的表单:

> <form action="{% url 'post_new' %}" method="post">
>     {% csrf_token %}
>     Name:<br>
>     <input type="text" name="name"><br>
>     Text:<br>
>     <input type="text" name="text">
>     <input type="submit" value="Submit"> 
  </form>

views.py:

def post_new(request):
    posts = Post.objects.all()
    name = request.POST['name']
    print(name)
    return render(request, 'blog/base.html', {'posts': posts})

urls.py:

urlpatterns = [
    url(r'^$', views.base),
    url(r'^post_new/$', views.post_new, name='post_new'),
]

1 个答案:

答案 0 :(得分:1)

您的Django项目中似乎有一个名为blog的应用。假设是这种情况,您需要使用名称空间。在您的主urls.py文件中,您应该具有以下内容:

urlpatterns = [
    url(r'^blog/', include('blog.urls', namespace="blog")),
]

您可以在urlpatterns应用下的urls.py中保持blog相同。使用此命名空间集,您可以通过执行以下操作来引用模板中的post_new视图:

<form action="{% url 'blog:post_new' %}" method="post">

这会在post_new应用中查找名为blog的视图。