python-如何在Django REST框架的as_view中传递其他args
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-如何在Django REST框架的as_view中传递其他args,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1379字,纯文字阅读大概需要2分钟。
内容图文
![python-如何在Django REST框架的as_view中传递其他args](/upload/InfoBanner/zyjiaocheng/681/2f0ef7302b8e44dcbdd117358d105912.jpg)
在我的网址中,我想像这样传递其他参数
MyListView.as_view(extra="test")
但是,当我这样做时,我得到的错误是我只能传递在类中定义的那些属性.
我试过了
class MyListView(APIView):
def as_view(self, extra=None, **kwargs):
self.extra=kwargs.pop('extra', None)
super(MyListView, self).as_view(**kwargs)
然后我得到
unbound method as_view() must be called with MyListView instance as first argument (got nothing instead)
解决方法:
每当需要视图实例时(例如,在处理请求时),将MyListView.as_view()调用的关键字参数传递给__init__方法.您可以覆盖该方法以捕获额外的关键字:
class MyListView(APIView):
def __init__(self, extra=None, **kwargs):
self.extra = extra
super(MyListView, self).__init__(**kwargs)
as_view() method必须是分类方法;不会在视图实例上调用它:
class MyListView(APIView):
@classmethod
def as_view(cls, extra=None, **kwargs):
cls.extra = extra
return super(MyListView, cls).as_view(**kwargs)
extra关键字参数已明确命名,因此在kwargs包罗万象中将永远找不到它.您还想返回super()调用的结果.
注意,额外的属性也会在视图的所有实例之间共享!您也可以直接在视图类上进行设置:
class MyListView(APIView):
extra = 'test'
由于as_view()必须产生一个实例,因此您可以在将其传递给super()调用的返回值之前添加该属性:
class MyListView(APIView):
@classmethod
def as_view(cls, extra=None, **kwargs):
view = super(MyListView, cls).as_view(**kwargs)
view.extra = extra
return view
但是覆盖__init__可以达到相同的结果,并且对于将来的维护者来说更容易遵循.
内容总结
以上是互联网集市为您收集整理的python-如何在Django REST框架的as_view中传递其他args全部内容,希望文章能够帮你解决python-如何在Django REST框架的as_view中传递其他args所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。