【发布时间】:2020-11-20 04:08:57
【问题描述】:
我有一个管理所有信息亭信息的 Flask 网络应用程序。我为信息亭的信息(forms.py)创建了一个 WTForms 对象:
class KioskForm(FlaskForm):
kiosk_name = StringField('Kiosk Name', validators=[DataRequired()])
kiosk_site = SelectField('Kiosk\'s Site', validators=[DataRequired()])
kiosk_location = StringField(
'Kiosk\'s Location', validators=[DataRequired()])
kiosk_ip = StringField('IP Address', validators=[
IPAddress(), DataRequired()])
kiosk_mac = StringField('MAC Address', validators=[DataRequired()])
submit = SubmitField('Submit')
def validate_kiosk_name(self, kiosk_name):
kiosk = db.session.query(KioskConf).filter_by(
equipment_name=self.kiosk_name.data).first()
if kiosk is not None:
raise ValidationError('Kiosk Name existed.')
假设我想编辑现有信息亭的信息 (routes.py):
@app.route('/edit_kiosk/<kiosk_name>', methods=['GET', 'POST'])
def edit(kiosk_name):
data = db.session.query(KioskConf).filter_by(
equipment_name=kiosk_name).first()
form = KioskForm(kiosk_name=data.equipment_name,
kiosk_location=data.equipment_location,
kiosk_ip=data.equipment_ip,
kiosk_mac=data.equipment_mac)
... ...
我想做的是:如果有人将信息亭的名称更改为另一个现有的名称,它会抱怨该名称已经存在。验证在 forms.py 中。
但是,一个问题是,如果我编辑了一个现有的信息亭,也许更改了 IP 地址,但名称保持不变,提交时仍然抱怨名称已经存在。这里的名称验证一定有问题。
如果名称不变,如何让 WTForms 跳过名称验证?
【问题讨论】:
标签: python flask flask-wtforms wtforms