Django class view: __init__

拥有回忆 提交于 2019-12-12 13:18:14

问题


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)
        ...

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


回答1:


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)

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.



来源:https://stackoverflow.com/questions/46599145/django-class-view-init

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!