python - ValueError:没有返回 HttpResponse 对象。它返回 None 而不是
问题描述
我想编辑我的帖子时遇到问题。当我按下编辑时 - 我有这个问题:
ValueError at /post/19/edit/
The view blog.views.post_edit didn't return an HttpResponse object. It returned None instead.
网址.py:
url(r'^post/(?P<pk>\d+)/edit/$', views.post_edit, name='post_edit'),
视图.py:
def post_edit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, request.FILES, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_edit.html', {'form':form})
post_edit.html:
{% block content %}
<h1>Edit Post</h1>
<form method="post" class="post-form" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% endblock %}
解决方案
您的缩进在几个地方是错误的。如果请求不是 POST,则需要实例化空白表单;你需要在任何情况下返回。所以:
def post_edit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, request.FILES, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_edit.html', {'form':form})
请注意else
与 firstif
的对齐方式,并且 return 在它们两者之外。
推荐阅读
- javascript - Antlr 解析器没有发生
- r - 将标签应用到数据框列表的自定义函数
- c# - 将对象从 Web 服务返回到客户端时收到错误消息
- pandas - 如何在 hexbin plots pandas 中设置范围?
- python - 无法在 Kaggle 中安装 pyautogui
- javascript - 如何通过匹配它们的 id 值将 2 个对象组合成一个表?
- html - 如果我使用 list-style:inside decimal,为什么在 li 标签中的直接子代之前会出现空格?
- shell - 如何在 @ 中使用密码!# ansible shell ssh 中的字符?
- python - 如何在 MongoEngine Flask 中附加到 EmbeddedDocumentListField?
- javascript - 是否可以在 React Typescript 中导入通配符路径?