Django 类视图:__init__

问题描述 投票:0回答:1

我想从 URL 获取

<Model>
值,并将其用作我的类中的
__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

<>
类视图的理解是错误的。

python django django-class-based-views
1个回答
16
投票

对于此类用例,您应该重写

dispatch
方法。

class Foo(CreateView):

    def dispatch(self, request, *args, **kwargs):
        # do something extra here ...
        return super().dispatch(request, *args, **kwargs)

但是,对于您的特定场景,您可以直接访问

self.kwargs
,因为通用视图会自动将它们分配为视图实例上的实例变量。

© www.soinside.com 2019 - 2024. All rights reserved.