Django 错误:render_to_response() 得到了一个意外的关键字参数 'context_instance'

新手上路,请多包涵

升级到 Django 1.10 后,出现错误 render_to_response() got an unexpected keyword argument 'context_instance'

我的看法如下:

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

这是完整的回溯:

 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'

原文由 Alasdair 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 625
2 个回答

--- 中的 render_to_response context_instance 参数在 Django 1.8 中已弃用,并在 Django 1.10 中删除。

解决方案是切换到 render 快捷方式,它会自动使用 RequestContext

更新您的导入并查看如下。请注意 renderrequest 对象作为其第一个参数。

 from django.shortcuts import render

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

render 快捷方式是在 Django 1.3 中引入的,因此此更改与旧版本的 Django 兼容。

原文由 Alasdair 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 Django 1.8 中是兼容的:

 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 中

from django.shortcuts import render
from django.template import RequestContext

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

原文由 Dantez Layton 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题