Я пытаюсь получить форму z3c. Форма, чтобы заполнить свою информацию и вместо того, чтобы сделать параметр get в URL-адресе, я бы хотел использовать publishTraverse.Plone/Zope/Z3c- Что может заставить publishTraverse «не найти страницу?»?
Так вот часть моего кода:
my_object_view.py:
class EditMyObject(form.Form):
fields = field.Fields(IMyObject)
ignoreContext = False
myObjectID = None
def publishTraverse(self, request, name):
print "Is this firing?"
if self.myObjectID is None:
self.myObjectID = name
return self
else:
raise NotFound()
def updateWidgets(self):
super(EditMyObject,self).updateWidgets()
#set id field's mode to hidden
def getContent(self):
db_utility = queryUtility(IMyObjectDBUtility, name="myObjectDBUtility")
return db_utility.session.query(MyObject).filter(MyObject.My_Object_ID==self.myObjectID).one()
#Button handlers for dealing with form also added
.....
from plone.z3cform.layout import wrap_form
EditMyObjectView = wrap_form(EditMyObject)
В моем файле configure.zcml в папке браузера:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
xmlns:zcml="http://namespaces.zope.org/zcml"
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="my.object">
<browser:page
name="myobject-editform"
for="*"
permission="zope2.View"
class=".my_object_view.EditMyObjectView"
/>
</configure>
я смог он работает, когда я использовал параметр get в URL-адресе, но когда я пытаюсь использовать publishTraverse, я получаю сообщение об ошибке страницы. Что странно, что когда
Это то, что мой URL выглядит, кстати, когда я пытаюсь использовать публиковать траверс:
http://localhost:8190/MyPloneSite/@@myobject-editform/1
Когда я выхожу из 1, но сохранить «/», это все еще находит страницу. Что я делаю неправильно, что вызывает это?
Это может определенно вызвать это. К сожалению, в моем случае, хотя я и добавил это, я все еще получаю сообщение, не найденное страницей. Возможно, что-то не так с моим кодом configure.zcml или wrapper. Я вношу изменения в вопрос, чтобы включить их. –
Я добавил абзац о том, что не использую представление оболочки. –
Благодарим вас за ответ. Я смог заставить его работать. Спасибо, что нашли время. Теперь я лучше разбираюсь в публикации. –