python - example - Cómo arreglar una Advertencia de Deprecation en Django 1.9
django rest framework response (2)
Soy un nuevo usuario del Framework Django. Actualmente estoy construyendo una API REST con django_rest_framework. Cuando inicio mi servidor recibo advertencias de desaprobación que no tengo idea de cómo solucionarlo.
RemovedInDjango110Advertencia: ''get_all_related_objects es una API no oficial que ha sido desaprobada. Puede reemplazarlo por ''get_fields ()'' para la relación en opts.get_all_related_objects ()
Lo anterior es el primero de estos. ¿Alguien sabe cómo solucionar este problema? Todo lo que tengo en mi API en el minuto son las llamadas de descanso estándar usando el ModelViewSet incorporado y también he sobrescrito el sistema de autenticación y usuario predeterminado con el mío, así que no tengo idea de por qué recibo estas advertencias porque he estado usando Django 1.9 desde el comienzo.
También obtuve esto:
RemovedInDjango110Advertencia: render () debe invocarse con un dict, no con un RequestContext
Desde mi investigación inicial, esto está relacionado con las plantillas. No estoy usando ninguna plantilla, así que no sé por qué viene esto.
¿Alguien puede ayudarme a solucionar estos problemas?
No es necesario que "corrija" las Advertencias de Deprecation ya que son, bueno, solo las advertencias y las cosas aún funcionan. Sin embargo, si decide actualizar, podrían romper su aplicación. Por lo tanto, generalmente es una buena idea reescribir las partes con advertencias a las nuevas interfaces, que se insinúan en esas advertencias si están en su código. Si está en alguna biblioteca secundaria que use, entonces es posible que desee esperar si el creador de la biblioteca actualizará su biblioteca en el próximo lanzamiento.
Con respecto a sus advertencias particulares, a menos que decida actualizar a Django 1.10, su código debería funcionar bien.
En caso de que alguien aterrice aquí, con respecto a la segunda advertencia de desaprobación específicamente:
RemovedInDjango110Advertencia: render () debe invocarse con un dict, no con un RequestContext
Esto solo está documentado en el código de Django :
def render(self, context=None, request=None):
# A deprecation path is required here to cover the following usage:
# >>> from django.template import Context
# >>> from django.template.loader import get_template
# >>> template = get_template(''hello.html'')
# >>> template.render(Context({''name'': ''world''}))
# In Django 1.7 get_template() returned a django.template.Template.
# In Django 1.8 it returns a django.template.backends.django.Template.
# In Django 1.10 the isinstance checks should be removed. If passing a
# Context or a RequestContext works by accident, it won''t be an issue
# per se, but it won''t be officially supported either.
Se puede solucionar fácilmente eliminando el uso de RequestContext
o Context
de render()
y simplemente pasando un diccionario.
Dejarlo como está en v1.9 no es exactamente lo mejor que se puede hacer. Como sugieren los desarrolladores de Django, puede funcionar o no. La diferencia es que en 1.9 obtenemos la advertencia de desaprobación.