修改kwarg数据以便在django中查看

时间:2017-08-06 19:18:44

标签: python django model-view-controller

我正在尝试在我的视图中实现类似MVC的模式。

基本上我有一个提供普通类型的基本视图,以及扩展基本视图的type1视图和type2视图。

我还有一个控制器和一个模型来获取和设置数据。 我需要将此模型传递给视图。 但是当我从视图中访问kwargs dict时,我总是得到一个KeyError。

我是django和python的新手。所以请不要介意我是否遗漏了一些明显的东西。

这是代码

class Controller():

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

    @classmethod
    def controller_init(cls): #entry point to view. Called in urls.py
        def view(request,slug,*args,**kwargs):
            self = cls()
            self.request = request
            self.slug = slug
            self.args = args
            self.kwargs = kwargs
            return self.start()

        return view

    def start(self):
        modal = Modal()
        self.kwargs['modal'] = modal
        modal.init(self.slug)
        ptype = modal.getPtype()
        return self.showView(ptype) 

    def showView(self,viewType):
        if(viewType == self.NORMAL):
            view_handler = View1.as_view()
        elif(projectType == self.TYPE1):
            view_handler = ExtendedView1.as_view()
        else:
            view_handler = ExtendedView2.as_view()

        return view_handler(self.request,self.args,self.kwargs)

以下是我的观点:

from django.views.generic.base import TemplateView

class View1(TemplateView):

template_name = "view_detail.html"

    def get_context_data(self, **kwargs):
        context = super(View1, self).get_context_data(**kwargs)
        self.modal = kwargs['modal']
        context['pid'] = self.modal.getPID()
        context['title'] = "This is a normal"
        return context

当我运行页面时,我得到一个KeyError,说明关键模态没有定义。

0 个答案:

没有答案