我一直在使用简单的grok和Plone 4.1.4。到目前为止,我尝试从此处提取的1.2.0和1.1.1版本的已知良好配置。

我尝试将grok.View与重定向一起使用,并且每当运行重定向代码(self.redirect('url'))时,都会引发以下TypeError:

TypeError: redirect() got an unexpected keyword argument 'trusted'
> /home/alex/projects/eggs/grokcore.view-1.13.5-py2.6.egg/grokcore/view/components.py(50)redirect()
-> url, status=status, trusted=trusted)


我发现此讨论处理类似的问题,但没有真正的解决方案。 five.grok

重现错误真的很容易,只要在grok.View派生的类中有一个update方法。

from five import grok
from Products.CMFCore.interfaces import ISiteRoot
class RedirectTest(grok.View):
    grok.context(ISiteRoot)
    grok.require('zope2.View')
    grok.name('testredirect')
    def update(self):
        self.redirect(self.url(''))
    def render(self):
        self.redirect(self.url(''))

最佳答案

要在Zope2平台(Plone使用)上使用Grok,需要安装正确版本的five.grok package

Grok是针对Zope工具包开发的,ZTK中的发布者程序包的API与Zope2发布者所提供的API略有不同。 five.grok弥合这种差异。但是您需要具有正确的版本才能进行正确的匹配。

对于Plone 4.1(Zope 2.13),请确保使用five.grok版本1.3.1或更高版本:


  
  修复重定向方法以正常工作。与Zope 3不同,它不支持可信。
  


如果要升级到Plone 4.2,则随附的versions.cfg文件中包含正确的版本图钉。

关于python - 使用Plone调用grok.View时self.redirect导致TypeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14696133/

10-12 23:50