Django TypeError:render()得到了意外的关键字参数'renderer'
问题描述:
我已经升级到Django 2.1,并且在加载管理界面时看到此错误:
I've upgraded to Django 2.1, and I'm seeing this error when I load the admin interface:
TypeError at /admin/foo/bar/1/change/
render() got an unexpected keyword argument 'renderer'
答
这几乎可以肯定是因为该向后不兼容的更改Django 2.1 :
This is almost certainly because of this backwards-incompatible change in Django 2.1:
- 支持
Widget.render()
方法,而无需renderer
参数已删除。
- Support for
Widget.render()
methods without therenderer
argument is removed.
您可能已将 django.forms.widgets.Widget 在您的代码中,或在您依赖项之一的代码中。代码可能看起来像这样:
You may have subclassed django.forms.widgets.Widget
in your code, or in the code of one of your dependencies. The code may look like this:
from django.forms import widgets
class ExampleWidget(widgets.Widget):
def render(self, name, value, attrs=None):
# ...
您需要修复 render
的方法签名,使其看起来像这样:
You need to fix the method signature of render
, so that it looks like this:
def render(self, name, value, attrs=None, renderer=None):
看看源 widgets.Widget
的代码,如果要检查的话。
Have a look at the source code of widgets.Widget
if you want to check.