Django TypeError:render()得到了意外的关键字参数'renderer'

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 the renderer 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.