简体   繁体   English

Django ValueError '没有返回 HttpResponse 对象'

[英]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.

相关问题 Django中/ profile /处的ValueError:未返回HttpResponse对象 - ValueError at /profile/ in Django: didn't return an HttpResponse object Django视图未返回HttpResponse对象 - Django view didn't return an HttpResponse object Django:查看“未返回HttpResponse对象” - Django: View “didn't return an HttpResponse object” Django CreateView没有返回HttpResponse对象 - Django CreateView didn't return an HttpResponse object Django-视图未返回HttpResponse对象 - Django - view didn't return an HttpResponse object Django-未返回HTTPResponse对象 - Django - didn't return an HTTPResponse Object python django ajax:ValueError:该视图未返回HttpResponse对象。 它返回None - python django ajax : ValueError: The view didn't return an HttpResponse object. It returned None instead ValueError:视图未返回 HttpResponse object。它返回 None。 (Django/ImgKit) - ValueError: The view didn't return an HttpResponse object. It returned None instead. (Django/ImgKit) ValueError:未返回HttpResponse对象。 它返回None - ValueError: Didn't return an HttpResponse object. It returned None instead Django ValueError 视图 todo_lists.views.visualisation 没有返回 HttpResponse 对象。 它返回 None 代替 - Django ValueError The view todo_lists.views.visualisation didn't return an HttpResponse object. It returned None instead
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM