问题描述
首先,我是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_ASSIGNMENTS
是assigned
的默认值:
@wraps(view_func)
否则,只需直接使用functools.WRAPPER_ASSIGNMENTS
。