如何在 DetailView 中加载评论表单?
How to load a comment form in DetailView?
我能够加载通过管理页面添加的评论,但我无法在 DetailView 本身中创建表单
我已尝试在详情视图模板中添加表单,但我仍然没有在站点中看到该表单
#views.py
class MessageDetailView(DetailView):
model = Message
template_name = "messaging/detail.html"
#queryset = Message.objects.all()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['comments'] = Comment.objects.filter(message=self.object)
return context
#detail.html
<form method="POST">
{% csrf_token %}
<h3>Write a New Comment</h3>
<div class="messagebox">
{{ form|crispy }}
<button class="btn" type="submit">
Post Comment
</button>
</div>
</form>
#forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ("comment")
#models.py
class Comment(models.Model):
message = models.ForeignKey(Message,on_delete=models.CASCADE)
comment = models.TextField(max_length=50)
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return "Comment on {}".format(str(self.date_posted))
站点加载了评论,但是没有加载表单,有什么办法可以解决这个问题?请在答案中提供一些代码,而不仅仅是将我链接到纪录片。
您没有将表单传递给您的模板:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['comments'] = Comment.objects.filter(message=self.object)
context['form'] = CommentForm()
return context
我能够加载通过管理页面添加的评论,但我无法在 DetailView 本身中创建表单
我已尝试在详情视图模板中添加表单,但我仍然没有在站点中看到该表单
#views.py
class MessageDetailView(DetailView):
model = Message
template_name = "messaging/detail.html"
#queryset = Message.objects.all()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['comments'] = Comment.objects.filter(message=self.object)
return context
#detail.html
<form method="POST">
{% csrf_token %}
<h3>Write a New Comment</h3>
<div class="messagebox">
{{ form|crispy }}
<button class="btn" type="submit">
Post Comment
</button>
</div>
</form>
#forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ("comment")
#models.py
class Comment(models.Model):
message = models.ForeignKey(Message,on_delete=models.CASCADE)
comment = models.TextField(max_length=50)
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return "Comment on {}".format(str(self.date_posted))
站点加载了评论,但是没有加载表单,有什么办法可以解决这个问题?请在答案中提供一些代码,而不仅仅是将我链接到纪录片。
您没有将表单传递给您的模板:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['comments'] = Comment.objects.filter(message=self.object)
context['form'] = CommentForm()
return context