Как расширить класс bassed view

Я создал class-based-view, который показывает содержимое поста. Я также добавил возможность делать комментарии, но форма комментария не работает.

views.py

class PostDetailView(DetailView):
    model=Post
    template_name='blogdetail.html'
    pk_url_kwarg='id'
   


    def comments(request):
        comments=post.comments.all()
        new_comment=None
        if request.method=="POST":
            comment_form=CommentForm(data=request.POST)
            if comment_form.is_valid():
                new_comment=comment_form.save(committ=False)
                new_comment.post=post
                new_comment.save()
        else:
            comment_form=CommentForm()
        return render(request, 'allblogs.html', {'comments':comments, 'comment_form':comment_form,
        'new_comment':new_comment})
   

forms.py

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

blogdetail.html

{% extends 'base.html' %}

{% block content %}
<h1>{{post.title}}</h1>
<p>{{post.created_on}}</p>
<p><a href="{% url 'userpage' post.author.username %}"></a>:{{post.author}}</p>
<p>{{post.text}}</p>
<form>
{{comment_form.as_p}}
<p><input type="submit" value="add"></p>
{% csrf_token %}
</form>

{% endblock content %}

Базовые представления классов не работают таким образом. Если вы посмотрите на свой класс, вы не вызвали функцию комментария. Я предлагаю вам посмотреть на эту страницу. Кроме того, для создания URL для вашего автора, я предлагаю вам использовать get_absolute_url в вашей модели и использовать его в вашем шаблоне следующим образом: {{ author.get_absolute_url }}

Надеемся, что этот ответ помог вам.

Вернуться на верх