Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

823
Vistas
¿Qué se convirtió en available_attrs en Django 3?

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_attrs

Busqué 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

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

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 devuelve functools.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.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda