使用控制器在django应用程序中返回不同的视图

时间:2017-08-01 08:25:07

标签: python django python-2.7 model-view-controller

我想根据连接到网址解析器的控制器中的逻辑在我的应用中返回多个视图。

以下是我的想法的一些示例代码。

class Project(Singleton):

    TYPE1, TYPE2 , TYPE3 = (0,1,2)

    def init(self,request, slug):
        self.pengine = ProjectEngine()
        self.pengine.init()
        self.request = request
        self.slug = slug
        ptype = pengine.getProjectType()
        return self.showProjectView(ptype)

    def showProjectView(self, projectType):
        if(projectType == TYPE1):
            return Type1View.as_view(self.request, self.slug)
        elif(projectType == TYPE2):
            return Type2View.as_view(self.request, self.slug)
        else:
            return Type3.as_view(self.request, self.slug)

Type1View例如从Djangos默认的TemplateView类扩展。 ProjectEngine应该是从中获取数据的模型类。

然后,url解析器将从init方法获取可调用视图,或者使用我在这里的Singleton概念,或者使用仅类方法,与基本View类的实现方式相同。

我只是不确定我是否应该以这种方式使用MVC模式。 url解析器应该直接解析为视图类方法,我想从控制器发送该数据,使用模型类到视图。我该如何实现这一目标? as_view方法是否有办法将数据发送到它?或者我应该放弃Django的View类,并在此处创建与设计相对应的另一个View。

0 个答案:

没有答案