【发布时间】:2021-05-29 18:00:57
【问题描述】:
我有 2 个视图,DetailView 显示帖子数据,CreateView 正在创建对该帖子的评论。问题是我的模板没有呈现任何评论表单,并且我的控制台中没有错误,我不知道为什么这不起作用。难道我做错了什么?如果是,我可以以不同的方式实施吗?如果是,我应该使用什么?提前谢谢你:)
查看代码:
class PostDetailView(LoginRequiredMixin, DetailView):
model = Post
context_object_name = 'post'
template_name = 'post/details.html'
class CommentCreate(LoginRequiredMixin, CreateView):
model = Comment
form_class = CommentCreationForm
context_object_name = 'forma'
template_name = 'post/details.html'
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
details.html 模板代码:
{% extends 'base.html' %}
{% load static %}
{% block content %}
<h1>POST</h1>
{{ post.content }}
<hr>
<form action="" method="post">
{% csrf_token %}
{{ form }}
<button class="btn btn-default" type="submit">Comment</button>
</form>
{% endblock content %}
意见表:
class CommentCreationForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('text', )
评论模型:
class Comment(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
text = models.TextField()
date_posted = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.id)
【问题讨论】:
-
它将始终使用 one 视图。一种常见的误解是,您以某种方式呈现模板,并且视图“订阅”了该模板。情况恰恰相反。所以你
DetailView确实不包含任何形式。
标签: python django django-views django-templates django-class-based-views