<p>我正在编写一个自定义视图,以避免在plone4的表视图中显示错误的事件开始和结束时间的错误。但是,当我调用我的视图时,我得到以下错误:</p>
<blockquote>
<p>Traceback (innermost last):<br/>
Module ZPublisher.Publish, line 116, in publish<br/>
Module ZPublisher.BaseRequest, line 498, in traverse<br/>
Module ZPublisher.BaseRequest, line 343, in traverseName<br/>
Module ZPublisher.BaseRequest, line 110, in publishTraverse<br/>
Module zope.component._api, line 122, in queryMultiAdapter<br/>
Module zope.component.registry, line 240, in queryMultiAdapter<br/>
Module zope.interface.adapter, line 522, in queryMultiAdapter<br/>
TypeError: <code>__init__</code>() takes exactly 2 arguments (3 given)</p>
</blockquote>
<p>我创建视图已经有一段时间了,但是我认为(根据<a href="http://plone.org/documentation/manual/plone-community-developer-documentation/views/browserviews#creating-a-view" rel="nofollow">this</a>)这个视图<code>__init__()</code>确实有3个参数(self、context、request)。无论如何,我的BrowserView课程现在是这样的:</p>
<pre><code>class NewEventsView(BrowserView):
"""Custom View for displaying events in a table with correct times"""
implements(INewEventsView)
def getCurrentEvents(self):
"""Method to return all active events in order"""
current_events = []
cat = getToolByName(self.context, 'portal_catalog')
brains = cat(portal_type='Event', review_state='published', sort_on='start')
for x in brains:
event = x.getObject()
if event.startDate > DateTime():
current_events.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(event)
return current_events
</code></pre>
<p>我已经尝试了不同的变体来添加一个<code>__init__</code>,就像上面提到的页面所显示的那样,只是为了让它有一个<code>__init__(self, context):</code>来看看两个参数是否真的会改变任何东西,它会给出完全相同的错误。在</p>
<p>我正在macosxsnowleopard上的plone4.0.2站点(在python2.6.6virtualenv中)进行测试</p>
<p>浏览器从浏览器查看注册/配置.zcml(我把这个放到了我也在研究的主题中)。我调用<a href="http://localhost:8080/plone/events/new_events_view" rel="nofollow">http://localhost:8080/plone/events/new_events_view</a>查看视图的外观并得到上面的错误。我还尝试在portal\u类型中为topic注册视图,当导航到<a href="http://localhost:8080/plone/events" rel="nofollow">http://localhost:8080/plone/events</a>时,它会给我这个错误,直到我删除该视图。在</p>
^{pr2}$
<p>任何帮助都将不胜感激。在</p>
<p>另外,我知道这是一小段代码,但是如果你认为可以用更好的方式来完成,我是一个学生,总是在寻找改进的方法。在</p>
<p>谢谢</p>