Как обработать это представление на основе функций с помощью представлений на основе классов?

Я следую этому учебнику об ajax и crud . В учебнике используется подход на основе функций, вместо этого я хочу использовать представления на основе классов, особенно для этого представления.

def book_create(request):
    data = dict()

    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            form.save()
            data['form_is_valid'] = True
            books = Book.objects.all()
            data['html_book_list'] = render_to_string('books/includes/partial_book_list.html', {
                'books': books
            })
        else:
            data['form_is_valid'] = False
    else:
        form = BookForm()

    context = {'form': form}
    data['html_form'] = render_to_string('books/includes/partial_book_create.html',
        context,
        request=request
    )
    return JsonResponse(data)

1 ответ

  1. Это пример представления на основе класса, основанного на вашем случае.

    from django.views import View
    
    class BookCreateView(View):
    
        def post(self, request):
            form = BookForm(request.POST)
            if form.is_valid():
                form.save()
                data['form_is_valid'] = True
                books = Book.objects.all()
                data['html_book_list'] = render_to_string('books/includes/partial_book_list.html', {
                    'books': books
                })
            else:
                data['form_is_valid'] = False
            context = {'form': form}
            data['html_form'] = render_to_string('books/includes/partial_book_create.html',
                context,
                request=request
            )
            return JsonResponse(data)
    
        def get(self, request):
            data = dict()
            form = BookForm()
            context = {'form': form}
            data['html_form'] = render_to_string('books/includes/partial_book_create.html',
                context,
                request=request
            )
            return JsonResponse(data)