首页 > 解决方案 > render() 得到了一个意外的关键字参数“renderer”

问题描述

我正在尝试使用 django-messages 在我的网站上启用用户对用户的消息传递。

当我设置它时,我在尝试访问撰写页面时遇到了这个错误。

TypeError at /messages/compose/
render() got an unexpected keyword argument 'renderer'

检查日志后,它指向其中一个文件中的包的渲染功能。代码是

return render(request, template_name, {'form': form})

我也在这里查看了这个答案:Django TypeError: render() got an unexpected keyword argument 'renderer'。我尝试添加其他参数,但似乎其他参数也没有被识别。就是说 attrs 和 renderer 是无法识别的参数。

我也在使用 django 2.2 版本,所以我认为这与向后兼容性问题无关。

奇怪的是,我有另一个文件以相同的方式使用渲染函数,它工作正常。

另外,正如我引用的链接所建议的那样,检查我所做的 widgets.py 文件,这就是它的外观

def render(self, name, value, attrs=None, renderer=None):
    print('I got called yo')
    """Render the widget as an HTML string."""
    context = self.get_context(name, value, attrs)
    return self._render(self.template_name, context, renderer)

只是让我更加困惑抱歉。

根据小部件文件,应该知道 attrs 和渲染器参数。但为什么它似乎无法识别?

这是来自 django-messages 的代码和我的代码可以正常工作

return render(request, template_name, {'form': form}) # django messages, template name is declared at the start of the function: template_name='django_messages/compose.html'
return render(request, "sendemail/email.html", {'form': form}) # from my code to send email

我导入的方式在使用渲染命令的两个文件上也是相同的

from django.shortcuts import render

也许我有一个更深层次的错误需要检查?

标签: djangodjango-messages

解决方案


正如 arneb 提到的,我必须安装 github 主版本https://github.com/arneb/django-messages/issues/146#issuecomment-647485205


推荐阅读