2016-08-03 15 views
43

Sau khi nâng cấp lên Django 1.10, tôi gặp lỗi render_to_response() got an unexpected keyword argument 'context_instance'.Lỗi Django: render_to_response() nhận được đối số từ khóa không mong muốn 'context_instance'

Quan điểm của tôi là như sau:

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

Dưới đây là toàn bộ 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' 

Trả lời

91

Tham số context_instance trong render_to_responsedeprecated in Django 1.8, và loại bỏ trong Django 1.10.

Giải pháp là chuyển sang lối tắt render, tự động sử dụng RequestContext.

Cập nhật nhập và xem của bạn như sau. Lưu ý rằng render lấy đối tượng request làm đối số đầu tiên.

from django.shortcuts import render 

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

Phím tắt render được giới thiệu trong Django 1.3, vì vậy thay đổi này tương thích với phiên bản cũ hơn của Django.

Các vấn đề liên quan