我正在尝试在我的视图中实现类似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,说明关键模态没有定义。