Django类别检视:__init__ [英] Django class view: __init__

查看:55
本文介绍了Django类别检视:__init__的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从URL获取< Model> 值,并将其用作类中的 __ init __ 参数.

I want to get <Model> value from a URL, and use it as an __init__ parameter in my class.

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 <> 类视图的理解是错误的.

Clearly, I'm missing something, or my understanding of URL <> class view is wrong.

推荐答案

对于此类用例,您应覆盖 dispatch 方法.

You should override dispatch method for such use cases.

class Foo(CreateView):

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

但是,对于您的特定情况,您可以直接访问 self.kwargs ,因为通用视图会自动将它们分配为视图实例上的实例变量.

For your specific scenario, however, you can directly access self.kwargs as generic views automatically assign them as an instance variable on the view instance.

这篇关于Django类别检视:__init__的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆