Django class-based views: Invoking (forwarding to) a different class-based view

django, python

Solution

class CBViewA(View):
    def get(self, request, *args, **kwargs):
        if 'save_as_new' in request.GET:
            return AddView.as_view()(request, *args, **kwargs)

django run another class-based view (CBV) in a CBV?

Problem

With Django functional views, it is very simple to invoke a different view function in order to "forward" a request to a different view. (The django codebase sometimes does this in its admin views.) You simply call the function and return the result. for example: ``` def change_view(request, *args, **kwargs): if 'save_as_new' in request.GET: return add_view(request, *args, **kwargs) ``` Its also easy enough to forward from a functional view to a Class-based view: ``` def change_view(request, *args, **kwargs): if 'save_as_new' in request.GET: return AddView.as_view()(request, *args, **kwargs) ``` However, I'm confused as to the proper or best way to conditionally invoke or forward to a second class-based view from a first class-based view, based on the existence or value of a url (GET) param or, alternatively, on the value of one of the args or kwargs from the url conf. Note that I'm not at all interested in doing a redirect here.

Original source

Related problems