2
我有一個plone表單,基本上獲取搜索詞,執行搜索,然後將用戶指向另一個表單。對於第二種形式,我需要傳遞一些變量。plone.directives表單 - 傳遞變量與重定向
class MySearch(form.SchemaForm):
grok.context(IMyContext)
grok.name('my-search')
ignoreContext = True
schema = ISearchSchema
@button.buttonAndHandler(_(u'Search Method'))
def searchMethod(self, action):
""" group update/removal """
data, errors = self.extractData()
if errors:
self.status = self.formErrorsMessage
return
results = somecall(data['term'])
if results:
self.request.set('myvar',results['myvar'])
self.request.response.redirect('@@my-results')
else:
IStatusMessage(self.request).addStatusMessage(_(u"No results found"),"info")
return
這不工作 - 我想產生一個新的請求,以便MYVAR立即消失。我可以把它放在一個查詢字符串中,並將其包含在重定向中,但如果可能的話,寧願將它作爲POST數據發送。我也嘗試過類似
return getMultiAdapter((self.context,self.request),name='my-results')()
,看看我是否可以使用,作爲一個起點,傳遞變量,但只是返回我對我的搜索。
這就是我現在所做的,但是我可以選擇將它發送到除.redirect()之外的下一個表單嗎?也許更好的方法是把所有東西都放在一起:我希望得到像舊的Controller Python Script/Template這樣的東西,你可以在「狀態」綁定中設置值,返回狀態,並且它會爲你處理所有的遍歷/重定向,同時傳遞這些值。 – Esoth
恐怕,您必須在此手動執行此操作。查看另一個視圖,然後渲染它(通過調用視圖對象),並返回*或*我的答案中的重定向。 –