2016-08-03 13 views
43

Po aktualizacji do Django 1.10 pojawia się błąd render_to_response() got an unexpected keyword argument 'context_instance'.Błąd Django: render_to_response() dostał nieoczekiwany argument słowa kluczowego "context_instance"

Mój pogląd jest następujący:

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)) 

Oto pełna traceback:

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' 

Odpowiedz

91

Parametr context_instance w render_to_response był deprecated in Django 1.8 i usuwane w Django 1.10.

Rozwiązaniem jest przejście na skrót render, który automatycznie korzysta z RequestContext.

Zaktualizuj swój import i zobacz w następujący sposób. Zauważ, że render pobiera obiekt request jako swój pierwszy argument.

from django.shortcuts import render 

def my_view(request): 
    context = {'foo': 'bar'} 
    return render(request, 'my_template.html', context) 

render skrót został wprowadzony w Django 1.3, więc ta zmiana jest kompatybilny ze starszymi wersjami Django.