需要选择 radio/boolean 个字段输入提交到电子邮件 - wtforms + flask
need selected radio/boolean fields input submitted to email - wtforms + flask
您好,我创建了一个新的项目表单,用户可以提交该表单到我的电子邮件中。目前想知道如何只获取用户选择的布尔字段的输入标签(= True)发送到我的电子邮件,而不是全部。这是否涉及 wtype1-5 的 for 循环:如果为真,则提交。否则:不提交?例如,使用:form.wtype1.data for Optional Boolean fields returns True or False。我只想要 True 输入的标签。使用 form.wtype1.label returns 带有 HTML label 标签的丑陋字符串,所以我不得不求助于 form.wtype1.description,这不是解决方案,因为我正在所有值而不仅仅是 True 值。
测试邮箱
来自:Richard salad beeeeeeeetetetetet@asdf.bnt
静态博客电子商务论坛其他
基本
基本模板 7
这是输入功能基本测试表单的评论区
形式class和功能
class NewProjectForm(Form):
subject = 'New Project Request!'
name = TextField([validators.Length(min=5, max=20)])
email = TextField([validators.Length(min=8, max=50), validators.Email()])
wtype1 = BooleanField(validators=[validators.Optional()], label='Static', description='Static')
wtype2 = BooleanField(validators=[validators.Optional()], label='Blog', description='Blog')
wtype3 = BooleanField(validators=[validators.Optional()], label='Ecommerce', description='Ecommerce')
wtype4 = BooleanField(validators=[validators.Optional()], label='Forums', description='Forums')
wtype5 = BooleanField(validators=[validators.Optional()], label='Other', description='Other')
wtype = (wtype1,wtype2,wtype3,wtype4,wtype5)
wpack = RadioField([validators.Required()], choices=[('SkyFly','SkyFly'),('Basic','Basic'),('Standard','Standard'),('Intermediate','Intermediate')])
templates = RadioField([validators.Required()], choices=[('Basic Template 1','Basic Template 1'),('Basic Template 2','Basic Template 2'), \
('Basic Template 3','Basic Template 3'), ('Basic Template 4','Basic Template 4'),('Basic Template 5','Basic Template 5'), \
('Basic Template 6','Basic Template 6'),('Basic Template 7','Basic Template 7'),('Basic Template 8','Basic Template 8'), \
('Basic Template 9','Basic Template 9'),('Basic Template 10','Basic Template 10'), \
('Intermd. Template 1', 'Intermd. Template 1'),('Intermd. Template 2','Intermd. Template 2')])
comments = TextAreaField([validators.Length(min=10, max=400)])
@app.route('/dashboard/newproject/', methods=["GET","POST"])
def new_project():
try:
form = NewProjectForm()
if request.method == "POST":
if form.validate() == False:
flash('Invalid! All fields are required.')
return render_template("dashboardNewproject.html", form=form)
else:
msg = Message(form.subject, sender='form.email.data', recipients=['skyldev1@gmail.com'])
msg.body = """
From: %s %s \n
%s %s %s %s %s \n %s \n %s \n \n %s
""" % (form.name.data, form.email.data, form.wtype1.description, form.wtype2.description, \
form.wtype3.description, form.wtype4.description, form.wtype5.description, \
form.wpack.data, form.templates.data, form.comments.data)
mail.send(msg)
flash('Congratulations! A new project has been submitted.')
gc.collect()
要更改最少的代码但让它做你想做的事,我会这样做:
class NewProjectForm(Form):
subject = 'New Project Request!'
name = TextField([validators.Length(min=5, max=20)])
email = TextField([validators.Length(min=8, max=50), validators.Email()])
wtype1 = BooleanField(validators=[validators.Optional()], label='Static', description='Static')
wtype2 = BooleanField(validators=[validators.Optional()], label='Blog', description='Blog')
wtype3 = BooleanField(validators=[validators.Optional()], label='Ecommerce', description='Ecommerce')
wtype4 = BooleanField(validators=[validators.Optional()], label='Forums', description='Forums')
wtype5 = BooleanField(validators=[validators.Optional()], label='Other', description='Other')
wtype = (wtype1,wtype2,wtype3,wtype4,wtype5)
wpack = RadioField([validators.Required()], choices=[('SkyFly','SkyFly'),('Basic','Basic'),('Standard','Standard'),('Intermediate','Intermediate')])
templates = RadioField([validators.Required()], choices=[('Basic Template 1','Basic Template 1'),('Basic Template 2','Basic Template 2'), \
('Basic Template 3','Basic Template 3'), ('Basic Template 4','Basic Template 4'),('Basic Template 5','Basic Template 5'), \
('Basic Template 6','Basic Template 6'),('Basic Template 7','Basic Template 7'),('Basic Template 8','Basic Template 8'), \
('Basic Template 9','Basic Template 9'),('Basic Template 10','Basic Template 10'), \
('Intermd. Template 1', 'Intermd. Template 1'),('Intermd. Template 2','Intermd. Template 2')])
comments = TextAreaField([validators.Length(min=10, max=400)])
def wtype(self):
return (self.wtype1,self.wtype2,self.wtype3,self.wtype4,self.wtype5)
@app.route('/dashboard/newproject/', methods=["GET","POST"])
def new_project():
try:
form = NewProjectForm(request.form)
if request.method == "POST":
if form.validate() == False:
flash('Invalid! All fields are required.')
return render_template("dashboardNewproject.html", form=form)
else:
wtype = ''
for each in form.wtype():
if each.data:
wtype+=' '+each.description
msg = Message(form.subject, sender='form.email.data', recipients=['skyldev1@gmail.com'])
msg.body = """
From: %s %s \n
%s \n %s \n %s \n \n %s
""" % (form.name.data, form.email.data, wtype[1:], \
form.wpack.data, form.templates.data, form.comments.data)
mail.send(msg)
flash('Congratulations! A new project has been submitted.')
gc.collect()
编辑:
我犯了一个错误,但现在已修复。我还必须对表格进行小幅修改。测试了它并且有效。
您可能还想从 email
字段中删除 Length()
验证器(例如,a@a.com 会被拒绝,并且它已经检查了有效的电子邮件)作为以及将 name
字段更改为 Required()
(有些人的名字不正常)。
您好,我创建了一个新的项目表单,用户可以提交该表单到我的电子邮件中。目前想知道如何只获取用户选择的布尔字段的输入标签(= True)发送到我的电子邮件,而不是全部。这是否涉及 wtype1-5 的 for 循环:如果为真,则提交。否则:不提交?例如,使用:form.wtype1.data for Optional Boolean fields returns True or False。我只想要 True 输入的标签。使用 form.wtype1.label returns 带有 HTML label 标签的丑陋字符串,所以我不得不求助于 form.wtype1.description,这不是解决方案,因为我正在所有值而不仅仅是 True 值。
测试邮箱
来自:Richard salad beeeeeeeetetetetet@asdf.bnt
静态博客电子商务论坛其他
基本
基本模板 7
这是输入功能基本测试表单的评论区
形式class和功能
class NewProjectForm(Form):
subject = 'New Project Request!'
name = TextField([validators.Length(min=5, max=20)])
email = TextField([validators.Length(min=8, max=50), validators.Email()])
wtype1 = BooleanField(validators=[validators.Optional()], label='Static', description='Static')
wtype2 = BooleanField(validators=[validators.Optional()], label='Blog', description='Blog')
wtype3 = BooleanField(validators=[validators.Optional()], label='Ecommerce', description='Ecommerce')
wtype4 = BooleanField(validators=[validators.Optional()], label='Forums', description='Forums')
wtype5 = BooleanField(validators=[validators.Optional()], label='Other', description='Other')
wtype = (wtype1,wtype2,wtype3,wtype4,wtype5)
wpack = RadioField([validators.Required()], choices=[('SkyFly','SkyFly'),('Basic','Basic'),('Standard','Standard'),('Intermediate','Intermediate')])
templates = RadioField([validators.Required()], choices=[('Basic Template 1','Basic Template 1'),('Basic Template 2','Basic Template 2'), \
('Basic Template 3','Basic Template 3'), ('Basic Template 4','Basic Template 4'),('Basic Template 5','Basic Template 5'), \
('Basic Template 6','Basic Template 6'),('Basic Template 7','Basic Template 7'),('Basic Template 8','Basic Template 8'), \
('Basic Template 9','Basic Template 9'),('Basic Template 10','Basic Template 10'), \
('Intermd. Template 1', 'Intermd. Template 1'),('Intermd. Template 2','Intermd. Template 2')])
comments = TextAreaField([validators.Length(min=10, max=400)])
@app.route('/dashboard/newproject/', methods=["GET","POST"])
def new_project():
try:
form = NewProjectForm()
if request.method == "POST":
if form.validate() == False:
flash('Invalid! All fields are required.')
return render_template("dashboardNewproject.html", form=form)
else:
msg = Message(form.subject, sender='form.email.data', recipients=['skyldev1@gmail.com'])
msg.body = """
From: %s %s \n
%s %s %s %s %s \n %s \n %s \n \n %s
""" % (form.name.data, form.email.data, form.wtype1.description, form.wtype2.description, \
form.wtype3.description, form.wtype4.description, form.wtype5.description, \
form.wpack.data, form.templates.data, form.comments.data)
mail.send(msg)
flash('Congratulations! A new project has been submitted.')
gc.collect()
要更改最少的代码但让它做你想做的事,我会这样做:
class NewProjectForm(Form):
subject = 'New Project Request!'
name = TextField([validators.Length(min=5, max=20)])
email = TextField([validators.Length(min=8, max=50), validators.Email()])
wtype1 = BooleanField(validators=[validators.Optional()], label='Static', description='Static')
wtype2 = BooleanField(validators=[validators.Optional()], label='Blog', description='Blog')
wtype3 = BooleanField(validators=[validators.Optional()], label='Ecommerce', description='Ecommerce')
wtype4 = BooleanField(validators=[validators.Optional()], label='Forums', description='Forums')
wtype5 = BooleanField(validators=[validators.Optional()], label='Other', description='Other')
wtype = (wtype1,wtype2,wtype3,wtype4,wtype5)
wpack = RadioField([validators.Required()], choices=[('SkyFly','SkyFly'),('Basic','Basic'),('Standard','Standard'),('Intermediate','Intermediate')])
templates = RadioField([validators.Required()], choices=[('Basic Template 1','Basic Template 1'),('Basic Template 2','Basic Template 2'), \
('Basic Template 3','Basic Template 3'), ('Basic Template 4','Basic Template 4'),('Basic Template 5','Basic Template 5'), \
('Basic Template 6','Basic Template 6'),('Basic Template 7','Basic Template 7'),('Basic Template 8','Basic Template 8'), \
('Basic Template 9','Basic Template 9'),('Basic Template 10','Basic Template 10'), \
('Intermd. Template 1', 'Intermd. Template 1'),('Intermd. Template 2','Intermd. Template 2')])
comments = TextAreaField([validators.Length(min=10, max=400)])
def wtype(self):
return (self.wtype1,self.wtype2,self.wtype3,self.wtype4,self.wtype5)
@app.route('/dashboard/newproject/', methods=["GET","POST"])
def new_project():
try:
form = NewProjectForm(request.form)
if request.method == "POST":
if form.validate() == False:
flash('Invalid! All fields are required.')
return render_template("dashboardNewproject.html", form=form)
else:
wtype = ''
for each in form.wtype():
if each.data:
wtype+=' '+each.description
msg = Message(form.subject, sender='form.email.data', recipients=['skyldev1@gmail.com'])
msg.body = """
From: %s %s \n
%s \n %s \n %s \n \n %s
""" % (form.name.data, form.email.data, wtype[1:], \
form.wpack.data, form.templates.data, form.comments.data)
mail.send(msg)
flash('Congratulations! A new project has been submitted.')
gc.collect()
编辑: 我犯了一个错误,但现在已修复。我还必须对表格进行小幅修改。测试了它并且有效。
您可能还想从 email
字段中删除 Length()
验证器(例如,a@a.com 会被拒绝,并且它已经检查了有效的电子邮件)作为以及将 name
字段更改为 Required()
(有些人的名字不正常)。