获取错误: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'),
]
答案 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
的视图。