在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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...