В 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!