Форма не появляется и не работает в проекте Django
Я относительно новичок в Django, поэтому столкнулся с одной небольшой проблемой. Я прочитал документацию и решил сделать свою собственную форму комментариев, которая отображается на той же странице (DetailView), где я отображаю деталь вопроса и все ответы, связанные с этим вопросом. Я попытался сделать все так, как написано в документации, но ничего не получилось. Я написал несколько функций, но и они не помогли. Затем я скопировал некоторые стили из bootstrap, что-то появилось, но я все еще не могу ничего опубликовать. Похоже, что метод POST не работает.
Это работает, когда я добавляю кнопку, которая ведет на конкретную страницу, где пользователи могут оставлять комментарии, но я хочу показать форму, отобразить ее на той же странице, где отображаются все ответы. Я буду благодарен за любую помощь, рекомендации и объяснения, как это работает.
models.py
class Question(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=255, db_index=True, verbose_name="URL")
detail = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
likes = models.ManyToManyField(User, related_name="forum_question")
def total_likes(self):
return self.likes.count()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('detail', kwargs={'slug': self.slug})
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True)
detail = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
likes = models.ManyToManyField(User, related_name="forum_answer")
def total_likes(self):
return self.likes.count()
def __str__(self):
return self.detail
class Comment(models.Model):
answer = models.ForeignKey(Answer, on_delete=models.CASCADE, null=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True)
detail = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return '%s - %s' % (self.answer.detail, self.date_posted)
forms.py
class AnswerForm(forms.ModelForm):
class Meta:
model = Answer
fields = ('detail',)
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('detail',)
views.py
class CommentView(LoginRequiredMixin, CreateView):
model = Comment
# form_class = CommentForm
template_name = 'forum/detail.html'
fields = ['detail']
success_url = 'forum/detail.html'
http_method_names = ['post']
def form_valid(self, form):
form.instance.answer_id = self.kwargs['id']
form.instance.user = self.request.user
return super().form_valid(form)
detail.html
<!-- Comment Section Starts-->
<form class="mb-4 ml-5 mt-3" method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<textarea class="form-control" rows="3" placeholder="Join the discussion and leave a comment!"></textarea>
<button type="submit" class="comment_button btn btn-dark">Answer</button>
</form>