Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 不允许使用方法(POST)_Django_Django Forms_Django Views - Fatal编程技术网

Django 不允许使用方法(POST)

Django 不允许使用方法(POST),django,django-forms,django-views,Django,Django Forms,Django Views,我试图允许用户按submit并创建另一个评论帖子,但我在单击帖子时收到“Method Not Allowed(post):” class PostDetailView(DetailView): model = Post def get_context_data(self, **kwargs): # post = Post.objects.filter(id = self.kwargs['pk']) post = get_object_or_404(Post, id=self.k

我试图允许用户按submit并创建另一个评论帖子,但我在单击帖子时收到“Method Not Allowed(post):”

class PostDetailView(DetailView):
model = Post
 def get_context_data(self, **kwargs):
    # post = Post.objects.filter(id = self.kwargs['pk'])
    post = get_object_or_404(Post, id=self.kwargs['pk'])
    comments = Comment.objects.filter(post=post).order_by('-id')
    is_liked = False
    if post.likes.filter(id=self.request.user.id).exists():
        is_liked = True

    context = super().get_context_data(**kwargs)

    if self.request.method == 'POST':
        comment_form = CommentForm(self.request.POST or None)
        if comment_form.is_valid():
            content = self.request.POST.get('content')
            comment = Comment.objects.create(post=post, user=self.request.user, content=content)
            comment.save()
            return HttpResponseRedirect(post.get_absolute_url())
    else:
        comment_form = CommentForm()

    context['is_liked'] = is_liked
    context['total_likes'] = post.total_likes()
    context['comments'] = comments
    context['comment_form'] = comment_form
    return context
对于模板:

<form method="post">
{% csrf_token %}
{{ comment_form.as_p}}
<input type="submit" value="Submit" class="btn btn-outline-success">

{%csrf_令牌%}
{{comment_form.as_p}}

如您所见,您不能在
DetailView
中使用
POST
方法。它只支持
get


如果要使用
POST
,应该使用formview或继承formmixin。

需要显示视图类的其余部分,而不仅仅是get\u context\u data方法。它定义了一个
post
方法,还是从一个这样定义的类继承来的?但是请注意,您当然不应该在get\u context\u data方法中处理表单之类的事情。这是为了获取上下文数据。我把我的问题改为包括全班。如何处理表单?应该使用表单视图-在本例中是CreateView。您的代码根本无法工作,您只能从该方法返回上下文,例如,不能重定向。