For*_*ter 27 python django django-class-based-views
我尝试了Django的基于类的视图(CBV).
class BlahView(TemplateView):
template_name = 'blah/blah.html'
def get_context_data(self, **kwargs):
#code...
def get(self, request, **kwargs):
#more code...
Run Code Online (Sandbox Code Playgroud)
现在,我知道我可以从self.request获得请求参数.现在说我要解析这些请求参数并将它们存储在类中.我可以存放self.xxx吗?现在,显然基于类的工作方式,这看起来很简单.
但我无法弄清楚控制的流程,看看View(超类TemplateView)的定义.该源提到as_view()是"入口点"
我想在开头设置我的实例变量get_context_data()但是在那里进行初始化似乎不对.
我可以__init__()为我的CBV 定义一个吗?如果是这样,是否存在线程问题或多个页面访问可能与我的解析数据的全局实例一起工作?
我知道这听起来有点混乱,但我只是对CBV中的代码流感到困惑.
jpi*_*pic 46
据源的django.views.generic.base.View.as_view:
view,它不叫view() 被调用,它实例化类和调用dispatch()据源的django.views.generic.base.View.__init__,请求对象超出范围在这一点上,所以你不能在自己的构造函数重载解析它.
但是,你可以解析请求并在重载中设置类视图实例属性,django.views.generic.base.View.dispatch根据来源这是安全的:
class YourView(SomeView):
def dispatch(self, request, *args, **kwargs):
# parse the request here ie.
self.foo = request.GET.get('foo', False)
# call the view
return super(YourView, self).dispatch(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12648 次 |
| 最近记录: |