[英]Django ValueError 'didn't return an HttpResponse object'
I have just started learning Python and Django.我刚开始学习Python和Django。 I was trying to create a simple blog website and ran into this error while updating the post.
我试图创建一个简单的博客网站,并在更新帖子时遇到了这个错误。 Django gives me this error when I try to update the post.
当我尝试更新帖子时,Django 给了我这个错误。 Everything else seems to be working fine and I can update the post from admin.
其他一切似乎都运行良好,我可以从管理员更新帖子。
Error: ValueError at /post/4/ The view posts.views.PostDetailView didn't return an HttpResponse object.错误:/post/4/ 处的 ValueError 视图 posts.views.PostDetailView 未返回 HttpResponse object。 It returned None instead.
它返回 None 。
Here is my code for the UpdateViews.py这是我的 UpdateViews.py 代码
class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = Post
form_class = PostForm
def form_valid(self,form):
form.instance.author = self.request.user
return super().form_valid(form)
def test_func(self):
post=self.get_object()
if self.request.user == post.Author:
return True
return False
Here is my code for DetailView:这是我的 DetailView 代码:
class PostDetailView(DetailView):
model = Post
template_name = 'posts/post.html'
context_object_name = 'obj'
form = CommentForm
def get_object(self):
obj = super().get_object()
if self.request.user.is_authenticated:
PostView.objects.get_or_create(user=self.request.user,post=obj)
return obj
def get_context_data(self, *args, **kwargs):
CatCount = Category_Count()
context = super().get_context_data(*args, **kwargs)
context['latest'] = Post.objects.order_by('-date_added')[0:3]
context['Category_Count'] = CatCount
context['form'] = self.form
return context
def post(self, request, *args, **kwargs):
form = CommentForm(request.POST)
if form.is_valid():
post = self.get_object()
form.instance.Author = request.user
form.instance.post = post
form.save()
return redirect(reverse("post", kwargs={
'pk': post.pk
}))
I have no idea why it's returning me this error, so any solution would be appreciated.我不知道为什么它会返回这个错误,所以任何解决方案都将不胜感激。 Thank You in Advance.
先感谢您。
You don't return anything when the form is not valid.当表单无效时,您不会返回任何内容。 You can render the template again with the form that contains the errors:
您可以使用包含错误的表单再次呈现模板:
class PostDetailView(DetailView):
model = Post
template_name = 'posts/post.html'
context_object_name = 'obj'
form = CommentForm
# …
def post(self, request, *args, **kwargs):
form = CommentForm(request.POST)
if form.is_valid():
post = self.get_object()
form.instance.Author = request.user
form.instance.post = post
form.save()
return redirect('post', pk=post.pk)
self.object = self.get_object()
context = self.get_context_data(object=self.object)
return
self.render_to_response(context)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.