微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Django 3上变成了available_attrs是什么?

如何解决在Django 3上变成了available_attrs是什么?

首先,我是Django的新手,所以请对我好:D

我目前正在为Django 3改编.py文件,因为我拥有的文件与Django 2兼容。因此,对新版本进行了一些更改,并在文件中写入:

@wraps(view_func,assigned=available_attrs(view_func))

使用导入:

from django.utils.decorators import available_attrs

搜索了available_attrs的改编版,很快我发现它已被替换为新版本。

当我启动代码时,我有这个:

ImportError : cannot import name 'available_attrs' from 'django.utils.decorators'

所以我想知道应该写些什么而不是available_attrs来使它起作用?

PS:对不起,我的英语不好

解决方法

available_attrs()仅用于帮助在Python 2和Python 3之间架起桥梁。Django 3.0 release notes中对此进行了说明:

已删除专用的Python 2兼容性API

在Django 2.0中删除了对Python 2的支持后,并未从Django中删除了一些私有API,以便第三方应用程序可以继续使用它们,直到Python 2终止使用。

由于我们希望应用在添加对Django 3.0的支持时会降低Python 2的兼容性,因此我们目前正在删除这些API。

  • [...]
  • django.utils.decorators.available_attrs()-此函数返回functools.WRAPPER_ASSIGNMENTS

如果示例行中的@wraps()是标准的functools.wraps() decorator,那么您可以完全删除assigned=available_attrs(...),因为functools.WRAPPER_ASSIGNMENTSassigned的默认值:

@wraps(view_func)

否则,只需直接使用functools.WRAPPER_ASSIGNMENTS

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。