首页 > 解决方案 > 在 django 的详细视图中使用 FormMixin 发布表单时,它不会发布数据

问题描述

我正在尝试使用 FormMixin 在 DetailView 中对帖子发表评论。当我尝试发布评论时,它不会发布它,而只是在 url 栏中提供 CSRF 数据。

这是我的看法

class PostDetailView(LoginRequiredMixin, FormMixin, DetailView):
    model = Post
    form_class = CommentCreationForm

def get_success_url(self):
    return reverse('post-detail', kwargs={'pk' : self.object.id})

def get_context_data(self, **kwargs):
    print("********************")
    print("Context taken")
    print("********************")
    context = super().get_context_data(**kwargs)
    context['form'] = CommentCreationForm(initial={
        'post': self.object
    })
    return context

def post(self, request, *args, **kwargs):
    print("********************")
    print("Post taken")
    print("********************")
    self.object = self.get_object()
    form = self.get_form()
    if form.is_valid():
        return self.form_valid(form)
    else:
        return self.form_invalid(form)

def form_valid(self, form):
    print("********************")
    print("Valid taken")
    print("********************")
    form.instance.author = self.request.user
    form.save()
    return super(PostDetailView, self).form_valid(form)

这就是我在网址栏中得到的

http://localhost:8000/blog/post/29/?csrfmiddlewaretoken=MFUjN61oQRLHOoBDKwfpc5vuklTW3nnhmtRXFlflOGeFyhEim1H8OBMsEnmZ6YaT&content=asdafdsf

评论创建表格

class CommentCreationForm(forms.ModelForm):
    content = forms.CharField()

    class Meta:
        model = Comment
        fields = [
            'author',
            'post',
            'content',
        ]
        widgets = {
            'content':  forms.Textarea(attrs={'class': 'textarea', 'rows': '5'})
        }

标签: django

解决方案


推荐阅读