I am trying to write comments on a post and which is in DetailView using FormMixin. When iI try to post the comment, it does not post it but just gives the CSRF data in the url bar.
here is my View
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)
this is what i get in url bar
http://localhost:8000/blog/post/29/?csrfmiddlewaretoken=MFUjN61oQRLHOoBDKwfpc5vuklTW3nnhmtRXFlflOGeFyhEim1H8OBMsEnmZ6YaT&content=asdafdsf
CommentCreationForm
class CommentCreationForm(forms.ModelForm):
content = forms.CharField()
class Meta:
model = Comment
fields = [
'author',
'post',
'content',
]
widgets = {
'content': forms.Textarea(attrs={'class': 'textarea', 'rows': '5'})
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…