Django erreur: render_to_response() a obtenu un inattendu argument mot-clé 'context_instance'
Après la mise à niveau de Django 1.10, j'obtiens l'erreur render_to_response() got an unexpected keyword argument 'context_instance'
.
Mon point de vue est comme suit:
from django.shortcuts import render_to_response
from django.template import RequestContext
def my_view(request):
context = {'foo': 'bar'}
return render_to_response('my_template.html', context, context_instance=RequestContext(request))
Ici, c'est la pleine traçabilité en amont:
Traceback:
File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)
File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/alasdair/dev/rtr/rtr/urls.py" in my_view
26. return render_to_response('my_template.html', context, context_instance=RequestContext(request))
Exception Type: TypeError at /
Exception Value: render_to_response() got an unexpected keyword argument 'context_instance'
Vous devez vous connecter pour publier un commentaire.
La
context_instance
paramètre dansrender_to_response
était obsolète dans Django 1.8, et retiré dans Django 1.10.La solution est de passer à la
render
raccourci, qui utilise automatiquement unRequestContext
.Mise à jour de vos importations et vue comme suit. Notez que
render
prend larequest
objet en tant que premier argument.La
render
raccourci a été introduit dans Django 1.3, si cette modification est compatible avec les anciennes versions de Django.dans Django 1.8 est compatible:
dans Django 1.11
render_to_response
dans Django 1.8. Comme je le dis dans ma réponse, larender
version fonctionne dans Django 1.3+.render_to_response
travaille en 1.8, mais il n'y a pas de bonne raison de l'utiliser -render
est plus simple.render_to_response
exemple. Utilisez simplementcontext
, pas{'context': context}
.Django 2.0.7 python 3.5
dans project/urls.py
dans project/views.py
exception=Aucun n'est passé parce que sinon il jette TypeError: server_error() manquant 1 nécessaire de position argument: "exception"
render_to_response
.