En primer lugar, soy nuevo en Django, así que por favor sean amables conmigo :D
Actualmente estoy adaptando archivos .py para Django 3 porque los archivos que tengo son compatibles con Django 2. Entonces, se han realizado algunos cambios para la nueva versión y en un archivo está escrito:
@wraps(view_func, assigned=available_attrs(view_func))Con la importación:
from django.utils.decorators import available_attrsBusqué una adaptación de available_attrs y rápidamente descubrí que se eliminó para la nueva versión.
Y cuando ejecuto el código, tengo esto:
ImportError : cannot import name 'available_attrs' from 'django.utils.decorators'Entonces, me preguntaba qué debo escribir en lugar de available_attrs para que funcione.
PD: Lo siento por mi mal inglés
available_attrs() solo existió para ayudar a conectar Python 2 y Python 3. Esto está documentado en las notas de la versión de Django 3.0 :
Se eliminaron las API privadas de compatibilidad con Python 2
Si bien la compatibilidad con Python 2 se eliminó en Django 2.0, algunas API privadas no se eliminaron de Django para que las aplicaciones de terceros pudieran continuar usándolas hasta el final de la vida útil de Python 2.
Dado que esperamos que las aplicaciones eliminen la compatibilidad con Python 2 al agregar soporte para Django 3.0, eliminaremos estas API en este momento.
- [...]
django.utils.decorators.available_attrs()- Esta función devuelvefunctools.WRAPPER_ASSIGNMENTS
Si @wraps() en su línea de muestra es el decorador estándar functools.wraps() , entonces puede simplemente eliminar por completo assigned=available_attrs(...) , porque functools.WRAPPER_ASSIGNMENTS es el valor predeterminado para assigned :
@wraps(view_func) de lo contrario, simplemente use functools.WRAPPER_ASSIGNMENTS directamente.