发布于2019-10-14 21:16 阅读(496) 评论(0) 点赞(3) 收藏(1)
标题确实没有说出来,因为我在总结问题时遇到了麻烦。因此,这里进行详细说明:
假设我要添加多个联系人的信息,并且我具有以下字段:
因此,马上,我将需要JavaScript在页面本身上完成此操作(添加添加或删除联系人字段),我可以接受。但是,由于我可以添加多个联系人(并且作为软件开发人员,我不知道用户要添加多少个联系人,所以可能是1、10或100)
因此,我最大的问题是我该如何构造每个字段的名称之类的内容。我应该将所有内容都放进诸如之类的东西中names[]
,contactmethods[]
并按顺序进行访问,还是有更好的解决方案。
另外,如果服务器开始验证这些信息,并找到一些格式错误的信息,我希望能够将客户端发送到服务器的数据发送回客户端,这样他们就不会丢失自己拥有的所有信息。输入。我将如何轻松地做到这一点?
一些背景信息:当前正在使用的技术(相关):
不需要构建任何东西(至少在服务器端)-WTForms已经支持您所需要的东西-称它们为“现场附件”。您正在寻找的行为位于wtforms.fields.FormField
和wtforms.fields.FieldList
class ContactForm(Form):
name = TextField("Name", validators=[Required()])
contact_type = SelectField("Contact Type",
validators=[Required()],
choices=[
("email", "Email"),
("phone", "Phone Number"),
("im", "Instant Message")
])
# `If` is a custom validator - see below
email_address = TextField("Email",
validators=[If("contact_type",
"email",
[Required(), Email()])
])
phone_number = TextField("Phone #",
validators=[If("contact_type",
"phone", [Required()])
])
im_handle = TextField("IM Handle",
validators=[If("contact_type",
"im", [Required()])
])
class SignUpForm(Form):
# Other fields go here
contacts = FieldList(FormField(ContactForm))
根据用户的选择,您还需要一个自定义验证器来验证适当的字段:
# CAUTION: Untested code ahead
class If(object):
def __init__(self,
parent,
run_validation=None,
extra_validators=None,
msg=None):
self.parent = parent
self.msg = msg if msg is not None else u"Invalid"
if callable(run_validation):
self.run_validation = run_validation
else:
_run_validation = lambda self, parent, form: parent.data == run_validation
self.run_validation = _run_validation
self.extra_validators = extra_validators if extra_validators is not None \
else []
def __call__(self, field, form):
parent = getattr(form, self.parent)
if self.run_validation(parent, form):
return field.validate(form, extra_validators=self.extra_validators)
当您form.validate()
在服务器端调用时,将根据要求自动检查字段,并且将适当填充错误,因此您可以将其重新呈现给客户端。
在客户端创建新字段很简单,只要您命名并使用与它相同的命名约定 - ,WTForms就会在后端提取它们field.short_name + '-' + index
。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/136842/3a9f04f3fa7f3c26815b/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!