django - 在 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'})
}
解决方案
推荐阅读
- macos - 如何通过 ffmpeg OSX 使用 hevc/h265 编解码器对视频进行编码
- javascript - 背景图像未填充圆圈 - D3/JavaScript
- ide - 自动完成 MVC 查看路径
- c++ - 具有结构成员字符数组的 sscanf
- python - Cursor.execute 没有工作
- java - 实现和运行 Here API 的问题
- csv - 在 Databricks 中,检查路径是否存在
- angular - AdminModule 和 AppModule!请考虑将 SignUpComponent 移至导入 AdminModule 和 AppModule 的更高模块
- android - 更新 KeyStore 文件的证书
- python - 无法在 Python 中导入 merkletools 库