作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试根据包含在 HTTP get 变量中的变量动态更新表单字段。特别是 www.site.com/form?id=name。我想从 url 中提取“id”字段并自动填充表单的 memberID 字段。
我可以使用 self.request.get('id') 访问 get 变量。但是我一直无法弄清楚如何更新表单字段。我检查了小部件文档 http://packages.python.org/z3c.form/widget.html但没有一个建议奏效。
class IUpdateEmailFormSchema(interface.Interface):
# -*- extra stuff goes here -*-
"""
"""
memberID = schema.TextLine(title=(u'Member id'))
email = schema.TextLine(title=(u'Email'), description=(u'The email'))
class updateEmailForm(form.Form):
fields = field.Fields(IUpdateEmailFormSchema)
label = _(u'Change Email')
ignoreContext = True
@button.buttonAndHandler(u'Update')
def handleUpdate(self,action):
data, errors = self.extractData()
if data.has_key('email'):
portal_membership = getToolByName(self.context, 'portal_membership')
member = portal_membership.getMemberById(data['memberID'])
def updateWidgets(self):
print "This is update widget \n\n"
import pdb; pdb.set_trace()
print self.request.form['id'] #Does not work as specified in http://packages.python.org/z3c.form/widget.html
#self.widgets["memberID"].value = self.request.get('id').encode('utf-8')
form.Form.updateWidgets(self)
updateEmailFormView = wrap_form(updateEmailForm)
最佳答案
updateWidgets 方法是正确的地方。
只是你应该先调用“form.Form.updateWidgets”然后做你的
更改(甚至更好的用户 super() 如下所示):
def updateWidgets(self):
super(updateEmailForm, self).updateWidgets()
id = self.request.get('id', None)
if id:
self.widgets["memberID"].value = id.encode('utf-8')
from zope.globalrequest import getRequest
request = getRequest()
关于forms - 如何修改updateWidgets中的z3c表单字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6483226/
在我正在使用的一个 Plone 站点上,我有一个表单用于编辑存储映射到后端数据库中的表的对象的记录。在接口(interface)类中,其中一个字段是 schema.Datetime 字段。 class
我是一名优秀的程序员,十分优秀!