使用flask格式化演示文稿和数据库条目的电话号码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用flask格式化演示文稿和数据库条目的电话号码相关的知识,希望对你有一定的参考价值。

我正在写一个带有由Postgres db支持的wtforms的烧瓶应用程序。

我希望用户输入几乎任何格式的电话号码,NNN NNN NNNNNNNNNNNNNNNNN-NNN-NNNN等。

我想将数字存储在数据库中,没有任何分隔符NNNNNNNNNN

实现这一目标的最佳方法是什么?我尝试在表单字段中放置getter和setter,但是当字段未绑定时,这会破坏功能。

class myform(FlaskForm):
    _phone=StringField('Phone #', validators=[Regexp("d{3}[ ,-]?d{3}[ ,-]?d{4}"]

    @propery
    def phone(self)
        return '{}-{}-{}'.format(self._phone[0:3],self._phone[3:6],self._phone[6:10])

   @phone.setter
   def phone(self, value):
        value = value.replace(' ','')
        value = value.replace('-','')
        self._phone = value
答案

虽然有点hacky,但您可以编辑用于验证的函数中的表单数据。

def reformat_phone(form, field):
    field.data = field.data.replace('-', '')
    return True

class PhoneForm(FlaskForm):
    phone = StringField('Phone #', validators=[reformat_phone])
    alright = SubmitField('submit')

其他选项包括编写自己的手机字段类,并在那里重写process_formdata功能。

编辑:

这是制作你自己的领域的选择:

class PhoneField(StringField):
    def process_formdata(self, valuelist):
        self.data = [v.replace('-', '') for v in valuelist]
        super().process_formdata(self.data)


class PhoneForm(FlaskForm):
    phone = PhoneField('Phone #')
    alright = SubmitField('submit')

以上是关于使用flask格式化演示文稿和数据库条目的电话号码的主要内容,如果未能解决你的问题,请参考以下文章

pdf如何转换成ppt演示文稿进行放映

ppt基本操作

模块五:演示文稿PowerPoint2010的使用

如何将 PowerPoint 演示文稿文件拆分为每个文件中包含一张幻灯片的文件

使用 Java 将 OpenOffice 幻灯片从一个演示文稿复制到另一个演示文稿

如何主持一个reveal.js 演示文稿