python - 如何在 wtforms Flask 中覆盖名称
问题描述
新的.html
{{ form.particular(name='particular[]') }}
我尝试使用上面的代码在输入字段中分配名称,但出现以下错误。但是,如果我添加一个类或 id 替换名称(例如: {{ form.particular(id='particulars') }} )它可以工作,但不适用于 name 只会输出以下错误:
builtins.TypeError TypeError: html_params
() 为关键字参数“名称”获取了多个值
任何解决方案。先感谢您 :)
解决方案
当您定义表单时:
class WebForm(FlaskForm):
particular = StringField('some_description')
然后你有一个字段name=particular
,它是 wtforms 的基础功能。因此,当您尝试这样做form.particular(name='particular[]')
时,会出现多值错误,因为您无法在 jinja2 模板中重新定义名称。
您以两种方式之一覆盖名称(请注意,在 jinja2 渲染发生之前,两者都是服务器端):
1)静态:即定义一个新名称:
class WebForm(FlaskForm):
particular_new = StringField('some_description')
2)动态:即一个包装函数创建一个修正的静态形式:
def WebForm(new_name):
class TempForm(FlaskForm):
pass
setattr(TempForm, new_name, StringField('some_description'))
return TempForm()
# will create a WebForm with attribute name of 'new_name' as StringField
推荐阅读
- scala - 如果作为依赖项包含(不导入),是否可以自动加载隐式定义
- go - 将查询参数设置为变量的简写
- ios - VENDOR IDENTIFIER 在不同设备上从 App Store 下载的同一个应用程序的异常情况
- typescript - 错误 TS2794:应有 1 个参数,但得到 0。您是否忘记在“Promise”的类型参数中包含“void”?
- ruby-on-rails - 在保存之前更改参数哈希中的值?
- ios - NEHotspotHelper 导致 Xcode 崩溃
- html - CSS问题:元素覆盖其他尝试将其放在下方时的元素
- docker - 如何在 docker 中使用 wsl(不是这样)
- python - PyTorch:聚合两个模型
- c++ - 使用 freopen stdout 禁用 printf,同时保持 std::cout 正常运行