Django error: render_to_response() got an unexpected keyword argument 'context_instance'
升级到Django 1.10后,我收到错误
我的观点如下:
1 2 3 4 5 6 | 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)) |
这是完整的追溯:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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' |
解决方案是切换到
更新导入和视图,如下所示。 请注意,
1 2 3 4 5 | from django.shortcuts import render def my_view(request): context = {'foo': 'bar'} return render(request, 'my_template.html', context) |
Django 2.0.7 python 3.5
在project / urls.py中
1 2 | handler404 = 'project.views.not_found' handler500 = 'project.views.server_error' |
在project / views.py中
1 2 3 4 5 6 7 8 9 | def not_found(request, exception=None): response = render(request, '404.html', {}) response.status_code = 404 return response def server_error(request, exception=None): response = render(request, '500.html', {}) response.status_code = 500 return response |
exception = None,否则抛出TypeError:server_error()缺少1个必需的位置参数:'exception'
在Django 1.8兼容:
1 2 3 4 5 6 | 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}, context_instance=RequestContext(request)) |
在Django 1.11
1 2 3 4 5 6 | from django.shortcuts import render from django.template import RequestContext def my_view(request): context = {'foo': 'bar'} return render(request, 'my_template.html', context) |