Да, это главный вопрос, который нужно понять в CBV: когда все работает, каков порядок исполнения (см. http://lukeplant.me.uk/blog/posts/djangos-cbvs-were-a-mistake/).
В двух словах, каждый класс, основанный на представлении, имеет порядок работы, каждый со своим собственным методом.
CBV имеет выделенный метод для каждого этапа выполнения.
Вы можете вызвать свой собственный метод из метода, который запускает шаг, на котором вы хотите вызвать свой собственный метод. Если вы, скажем, хотите запустить свой метод после того, как вид обнаружил, что форма является действительной, вы делаете что-то вроде этого:
Class InvoiceCreateView(LoginRequiredMixin,CreateView):
model = Invoice
def generate_invoice(self):
... do something with self.object
return invoice
def form_valid(self,form):
self.object = form.save()
self.generate_invoice()
return super(InvoiceCreateView,self).form_valid(form)
Таким образом, вы должны решить, где ваш пользовательский метод должен работать, и определить свой собственный метод в дополнение к представлению общего метода для этого шага.
Как узнать, какой общий метод используется для каждого этапа выполнения представления? То, что метод вызывает вызов, когда он получает исходные данные для формы, - def get_initial
? Из документов django и https://ccbv.co.uk/. Это выглядит сложным, но на самом деле вам нужно написать очень мало методов, только там, где вам нужно добавить свое собственное поведение.
Непонятно, что вы пытаетесь достичь здесь, вы можете отвечать только на URL-адреса с помощью [http-запроса] (https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html) – Sayse