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

核能气质少年 提交于 2019-11-30 18:29:18

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!