如何添加评论到帖子?PostDetailVew,Django 2.1.5

2024-09-30 16:33:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在他的页面上添加评论(“发布详细信息”页面)。在

我找到了答案,但它在另一个页面上创建了评论。我想在“发布详细信息”页面上创建评论。在

网址.py

url(r'^post/(?P<pk>\d+)/create/$', views.CommentCreate.as_view(), name='comment_create'),

模型.py

^{pr2}$

表单.py

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ['description']

视图.py

class PostDetailView(generic.DetailView):
    model = Post


class CommentCreate(LoginRequiredMixin, CreateView):
    model = Comment
    fields = ['description']

    def get_context_data(self, **kwargs):
        context = super(CommentCreate, self).get_context_data(**kwargs)
        context['post'] = get_object_or_404(Post, pk = self.kwargs['pk'])
        return context

    def form_valid(self, form):
        form.instance.author = self.request.user
        form.instance.post=get_object_or_404(Post, pk = self.kwargs['pk'])
        return super(CommentCreate, self).form_valid(form)

    def get_success_url(self):
        return reverse('post-detail', kwargs={'pk': self.kwargs['pk'],})

评论_表单.html

...    
<form action="" method="post">
    {% csrf_token %}
    <table>
    {{ form.as_table }}
    </table>
    <button type="submit">Submit</button>
</form>
...

发布_详细信息.html

...
{% for comment in post.comment_set.all %}
<p>{{ comment.author }} ({{ comment.comment_date }}) {{ comment.description|safe }}</p>
{% endfor %}
<hr>
{% if user.is_authenticated %}
<p><a href = "{% url 'comment_create' post.id %}">Add a new comment</a></p>
...

我认为,“评论表”需要重定向到“帖子详情”,而不是为评论表单生成新页面。在

你能告诉我,哪些参数有RichTextField(CKE),如何只在注释中更改width、height字段?在


Tags: pyselfformurlgetcontextcomment评论
1条回答
网友
1楼 · 发布于 2024-09-30 16:33:20

如果你想让评论表单出现在你的详细页面中,那么你只需在视图中添加表单和post函数

class PostDetailView(DetailView):
    model = Post
    template_name = 'yourdetailpage.html'

    def get_context_data(self, **kwargs):
       context = super(PostDetailView, self).get_context_data(**kwargs)
       context['commentform'] = CommentForm()
       return context

    def post(self, request, pk):
       post = get_object_or_404(Post, pk=pk)
       form = CommentForm(request.POST)

       if form.is_valid():
           obj  = form.save(commit=False)
           obj.post = post
           obj.author = self.request.user
           obj.save()
           return redirect('detail', post.pk)

现在可以在html中添加表单了。并添加一个提交按钮来发表评论。在

相关问题 更多 >