问题
so I have a CBV (A), CBV (B), and a url like
regex=r'^(?P<slug>[-\w]+)/(?P<app>[-\w]+)'
I want to read in the slug and app parameters with (A) and then based on those, redirect it to an appropriate CBV, possible (B). I don't want to redirect the user with HttpResponseRedirect or anything like that, but instead basically run another CBV as if it were the one being called. How do I run another CBV, like (B), directly/internally from a CBV (A)?
回答1:
You can call it that way:
class CBViewA(View):
def dispatch(self, request, *args, **kwargs):
if kwargs['slug'] = "some slug":
return CBViewB.as_view()(request, *args, **kwargs)
else:
return super(CBViewA, self).dispatch(request, *args, **kwargs)
来源:https://stackoverflow.com/questions/16232072/django-run-another-class-based-view-cbv-in-a-cbv