当我们使用Django开发个人网站时,如果用到富文本编辑器时,有时会遇到这个问题。
我们启动项目,进入文章发布页面。提示出错:
render() got an unexpected keyword argument 'renderer'
如图:
网上一名不愿意透漏姓名的网友告诉我们,错误产生的原因位置是:
DjangoUeditor > widgets.py > UEditorWidget 类,间接继承 django > forms > widgets.py > Widget 类,
而 django > forms > widgets.py > Widget 类。
解决方法目前了解到有两种:
- 第一种
第一种也是我们推荐使用的。
即修改DjangoUeditor
里的源代码:
位置在:
DjangoUeditor > widgets.py > UEditorWidget类中
,大概在167行左右(版本不同,位置不相同)
重新render函数:具体如下:
源代码:def render(self, name, value, attrs=None):
修改为:def render(self, name, value, attrs=None, renderer=None):
- 第二种
第二种是网上随便就能搜到的,但是我不推荐,因为修改的是python环境的源码。
这虽然可以实现,是不是听着就不合适,修改这个源码的一般都是大神,你要是也是,当我没有说。
修改位置就是我们在前端可以看到的错误位置:
site-packages\django\forms\boundfield.py in as_widget, line 93
就是这个源码的第93行,如下图:
把93行注销后,就可以使用了。
虽然比较简单,但是极力不推荐,能不修改系统源码的就不要修改。
还有其他方法的欢迎交流。