Изменение представления на основе функций на представление на основе классов - PullRequest
0 голосов
/ 14 декабря 2018

Как можно изменить это представление на основе функций на представление на основе классов?Представляет пост с разделом комментариев.

def post_detail(request, pk):
post = get_object_or_404(Post, id=pk)
comments = Comment.objects.filter(post=post).order_by('-id')
is_liked = False
if post.likes.filter(id=request.user.id).exists():
    is_liked = True

if request.method == 'POST':
    comment_form = CommentForm(request.POST or None)
    if comment_form.is_valid():
        content = request.POST.get('content')
        comment = Comment.objects.create(post=post, user=request.user, content=content)
        comment.save()
        resp = post.get_absolute_url()
        return HttpResponseRedirect(resp)
else:
    comment_form = CommentForm()

context = {
    'post': post,
    'is_liked': is_liked,
    'total_likes': post.total_likes(),
    'comments': comments,
    'comment_form': comment_form
}

return render(request, 'feed/post_detail.html', context)

1 Ответ

0 голосов
/ 14 декабря 2018

Для этого вы можете использовать общий вид.

from django.views.generic import View

class PostDetailView(View):
    def get(self, request, *args, **kwargs)
         post = get_object_or_404(Post, id=pk)
         comments = Comment.objects.filter(post=post).order_by('-id')
         is_liked = False
         if post.likes.filter(id=request.user.id).exists():
             is_liked = True

         comment_form = CommentForm()

         context = {
             'post': post,
             'is_liked': is_liked,
             'total_likes': post.total_likes(),
             'comments': comments,
             'comment_form': comment_form
         }

         return render(request, 'feed/post_detail.html', context)

    def post(self, request, *args, **kwargs):
        comment_form = CommentForm(request.POST or None)

        if comment_form.is_valid():
            content = request.POST.get('content')
            comment = Comment.objects.create(post=post, user=request.user, content=content)
            comment.save()
            resp = post.get_absolute_url()
            return HttpResponseRedirect(resp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...