【问题标题】:How to populate my WTForm variables?如何填充我的 WTForm 变量?
【发布时间】:2011-12-29 00:27:02
【问题描述】:

我正在启用可以编辑实体的功能。我想用数据存储中的变量填充表单。我该怎么做?我的代码没有填充表单:

if self.request.get('id'):
  id = int(self.request.get('id'))
  ad = Ad.get(db.Key.from_path('Ad', id))
  im = ad.matched_images
  editAdForm = AdForm(ad)
  if str(users.get_current_user()) == str(ad.user) or users.is_current_user_admin():                    
    self.render_jinja('edit', form_url=blobstore.create_upload_url('/addimage'),
                        admin=users.is_current_user_admin(),
                        user_url= (users.create_logout_url('/'
                                ) if users.get_current_user() else users.create_login_url(self.request.uri)),
                        user= users.get_current_user(),
                        ad= ad,
                        form = editAdForm)

相反,我看到此错误消息:

formdata 应该是一个多字典类型的包装器,它支持 'getlist' 方法:

更新

解决方法是像这样填充表单,但我想知道这是否真的是推荐的方式?

editAForm = AForm(name=article.name, title=article.title, text=article.text... )

【问题讨论】:

    标签: python google-app-engine jinja2 wtforms


    【解决方案1】:

    您需要通过表单的第二个参数“obj”传递您的对象:

    editAdForm = AdForm(obj=ad)
    

    在此处的文档速成课程中进行了概述:http://wtforms.simplecodes.com/docs/dev/crash_course.html#editing-existing-objects

    【讨论】:

    • 感谢 Thomas 的解决方案。
    • 太棒了!我对找到 form.populate_obj() 的终点感到困惑;)
    猜你喜欢
    • 1970-01-01
    • 2015-03-23
    • 2011-10-01
    • 2021-02-13
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2016-05-27
    相关资源
    最近更新 更多