Django 1.10发行说明(https://docs.djangoproject.com/en/1.10/releases/1.10/#features-removed-in-1-10)说:
django.shortcuts.render()
但是,1.10(https://docs.djangoproject.com/en/1.10/topics/http/shortcuts/#render)中render()
的文档仍将context
列为dictionary
类型的参数:
要添加到模板上下文的值的字典。默认情况下,这是一个空字典。如果字典中的值是可调用的,则视图将在呈现模板之前调用它。
坦率地说,我的问题是什么?通常这将是一个学术问题,但以下代码:
def index(request):
context = RequestContext(request, {})
return render(request, 'maintenance/maintenance.html', context)
产生此错误:
TypeError: dict expected at most 1 arguments, got 3
这是我能找到问题的最佳线索。我还应该提一下,在将Django从1.8升级到1.10之后出现了这个错误。
答案 0 :(得分:4)
您混淆context
和context_instance
,这是两个独立的参数。在Django 1.10中删除了context_instance
参数,但context
仍然存在。
正如文档所说,context
应该是值的字典。您收到错误是因为您传递的是RequestContext
实例而不是字典。您可以通过将示例视图更改为:
def index(request):
context = {}
return render(request, 'maintenance/maintenance.html', context)