Как отключить редирект в createveiw django?

В Django, класс CreateView используется для создания новых объектов моделей и сохранения их в базу данных. По умолчанию, при успешном создании объекта, CreateView выполняет редирект на страницу SUCCESS_URL.

Однако, в некоторых случаях может возникнуть необходимость отключить этот редирект и остаться на текущей странице после успешного создания объекта. В Django это можно сделать, переопределив метод form_valid() в вашем классе CreateView.

Вот пример кода, показывающего, как отключить редирект в CreateView:

from django.views.generic import CreateView
from django.shortcuts import render

from .models import YourModel
from .forms import YourForm

class YourCreateView(CreateView):
    model = YourModel
    form_class = YourForm
    template_name = 'your_template.html'
    
    def form_valid(self, form):
        # сохраняем объект формы в переменную, но не сохраняем в базу данных
        self.object = form.save(commit=False)
        
        # выполняем необходимые действия с объектом (добавляем дополнительные данные и т. д.)
        # ...
        
        # сохраняем объект в базу данных
        self.object.save()
        
        # возвращаем текущий контекст для рендеринга шаблона
        return render(self.request, self.template_name, self.get_context_data(form=form))

В этом примере мы переопределяем метод form_valid(), который вызывается при валидации данных формы. Вместо стандартного редиректа, мы сохраняем объект формы в переменную self.object, выполняем необходимые действия и сохраняем объект в базу данных с помощью self.object.save(). Затем мы возвращаем текущий контекст для рендеринга шаблона с самой формой, используя функцию render(). Это позволяет остаться на текущей странице после успешного создания объекта.

Обратите внимание, что в этом примере мы также указываем имя шаблона с помощью переменной template_name. Проверьте, что у вас есть соответствующий шаблон для вашей CreateView.

Надеюсь, это помогло вам разобраться с отключением редиректа в Django CreateView!