Django class 视图:__init__
Django class view: __init__
我想从 URL 中获取 <Model>
值,并将其用作 class 中的 __init__
参数。
urls.py
url(r'^(?P<Model>\w+)/foo/$', views.foo.as_view(), name='foo_class'),
views.py
class foo(CreateView):
def __init__(self, **kwargs):
text = kwargs['Model'] # This is not working
text = kwargs.get('Model') # Neither this
Bar(text)
...
显然,我遗漏了什么,或者我对URL <>
class 观点的理解是错误的。
对于此类用例,您应该覆盖 dispatch
方法。
class Foo(CreateView):
def dispatch(self, request, *args, **kwargs):
# do something extra here ...
return super(Foo, self).dispatch(request, *args, **kwargs)
但是,对于您的特定情况,您可以直接访问 self.kwargs
,因为通用视图会自动将它们分配为视图实例上的实例变量。
我想从 URL 中获取 <Model>
值,并将其用作 class 中的 __init__
参数。
urls.py
url(r'^(?P<Model>\w+)/foo/$', views.foo.as_view(), name='foo_class'),
views.py
class foo(CreateView):
def __init__(self, **kwargs):
text = kwargs['Model'] # This is not working
text = kwargs.get('Model') # Neither this
Bar(text)
...
显然,我遗漏了什么,或者我对URL <>
class 观点的理解是错误的。
对于此类用例,您应该覆盖 dispatch
方法。
class Foo(CreateView):
def dispatch(self, request, *args, **kwargs):
# do something extra here ...
return super(Foo, self).dispatch(request, *args, **kwargs)
但是,对于您的特定情况,您可以直接访问 self.kwargs
,因为通用视图会自动将它们分配为视图实例上的实例变量。