婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Flask wtforms實現表單驗證使用

Flask wtforms實現表單驗證使用

熱門標簽:西青語音電銷機器人哪家好 成都呼叫中心外呼系統哪家強 電梯新時達系統外呼顯示e 南昌地圖標注 百應電話機器人總部 旅游廁所地圖標注怎么弄 宿州電話機器人哪家好 無錫智能外呼系統好用嗎 地圖標注與注銷

wtforms

安裝:pip3 install wtforms

使用1(簡單版):

from flask import Flask, render_template, request, redirect
from wtforms import Form
from wtforms.fields import simple
from wtforms import validators
from wtforms import widgets

app = Flask(__name__, template_folder='templates')

app.debug = True


class LoginForm(Form):
    # 字段(內部包含正則表達式)
    name = simple.StringField(
        label='用戶名',
        validators=[
            validators.DataRequired(message='用戶名不能為空.'),
            validators.Length(min=6, max=18, message='用戶名長度必須大于%(min)d且小于%(max)d')
        ],
        widget=widgets.TextInput(), # 頁面上顯示的插件
        render_kw={'class': 'form-control'}

    )
    # 字段(內部包含正則表達式)
    pwd = simple.PasswordField(
        label='密碼',
        validators=[
            validators.DataRequired(message='密碼不能為空.'),
            validators.Length(min=8, message='用戶名長度必須大于%(min)d'),
            validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?])[A-Za-z\d$@$!%*?]{8,}",
                              message='密碼至少8個字符,至少1個大寫字母,1個小寫字母,1個數字和1個特殊字符')

        ],
        widget=widgets.PasswordInput(),
        render_kw={'class': 'form-control'}
    )



@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        form = LoginForm()
        return render_template('login.html', form=form)
    else:
        form = LoginForm(formdata=request.form)
        if form.validate():
            print('用戶提交數據通過格式驗證,提交的值為:', form.data)
        else:
            print(form.errors)
        return render_template('login.html', form=form)

if __name__ == '__main__':
    app.run()

login.html

!DOCTYPE html>
html lang="en">
head>
    meta charset="UTF-8">
    title>Title/title>
/head>
body>
h1>登錄/h1>
form method="post">
    p>{{form.name.label}} {{form.name}} {{form.name.errors[0] }}/p>

    p>{{form.pwd.label}} {{form.pwd}} {{form.pwd.errors[0] }}/p>
    input type="submit" value="提交">
/form>
/body>
/html>

使用2(復雜版):

from flask import Flask, render_template, request, redirect
from wtforms import Form
from wtforms.fields import core
from wtforms.fields import html5
from wtforms.fields import simple
from wtforms import validators
from wtforms import widgets

app = Flask(__name__, template_folder='templates')
app.debug = True



class RegisterForm(Form):
    name = simple.StringField(
        label='用戶名',
        validators=[
            validators.DataRequired()
        ],
        widget=widgets.TextInput(),
        render_kw={'class': 'form-control'},
        default='alex'
    )

    pwd = simple.PasswordField(
        label='密碼',
        validators=[
            validators.DataRequired(message='密碼不能為空.')
        ],
        widget=widgets.PasswordInput(),
        render_kw={'class': 'form-control'}
    )

    pwd_confirm = simple.PasswordField(
        label='重復密碼',
        validators=[
            validators.DataRequired(message='重復密碼不能為空.'),
            validators.EqualTo('pwd', message="兩次密碼輸入不一致")  # EqualTo也可以做密碼驗證
        ],
        widget=widgets.PasswordInput(),
        render_kw={'class': 'form-control'}
    )

    email = html5.EmailField(
        label='郵箱',
        validators=[
            validators.DataRequired(message='郵箱不能為空.'),
            validators.Email(message='郵箱格式錯誤')
        ],
        widget=widgets.TextInput(input_type='email'),
        render_kw={'class': 'form-control'}
    )

    gender = core.RadioField(
        label='性別',
        choices=(
            (1, '男'),
            (2, '女'),
        ),
        coerce=int # “1” “2”
     )
    city = core.SelectField(
        label='城市',
        choices=(
            ('bj', '北京'),
            ('sh', '上海'),
        )
    )

    hobby = core.SelectMultipleField(
        label='愛好',
        choices=(
            (1, '籃球'),
            (2, '足球'),
        ),
        coerce=int
    )

    favor = core.SelectMultipleField(
        label='喜好',
        choices=(
            (1, '籃球'),
            (2, '足球'),
        ),
        widget=widgets.ListWidget(prefix_label=False),
        option_widget=widgets.CheckboxInput(),
        coerce=int,
        default=[1, 2]
    )

    def __init__(self, *args, **kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)
        self.favor.choices = ((1, '籃球'), (2, '足球'), (3, '羽毛球'))

    def validate_pwd_confirm(self, field):
        """
        自定義pwd_confirm字段規則,例:與pwd字段是否一致
        :param field:
        :return:
        """
        # 最開始初始化時,self.data中已經有所有的值

        if field.data != self.data['pwd']:
            # raise validators.ValidationError("密碼不一致") # 繼續后續驗證
            raise validators.StopValidation("密碼不一致")  # 不再繼續后續驗證


@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'GET':
        form = RegisterForm(data={'gender': 2,'hobby':[1,]}) # initial
        return render_template('register.html', form=form)
    else:
        form = RegisterForm(formdata=request.form)
        if form.validate():
            print('用戶提交數據通過格式驗證,提交的值為:', form.data)
        else:
            print(form.errors)
        return render_template('register.html', form=form)



if __name__ == '__main__':
    app.run()

register.html

!DOCTYPE html>
html lang="en">
head>
    meta charset="UTF-8">
    title>Title/title>
/head>
body>
h1>用戶注冊/h1>
form method="post" novalidate style="padding:0  50px">
    {% for field in form %}
    p>{{field.label}}: {{field}} {{field.errors[0] }}/p>
    {% endfor %}
    input type="submit" value="提交">
/form>
/body>
/html>

到此這篇關于Flask wtforms實現表單驗證使用的文章就介紹到這了,更多相關Flask wtforms表單驗證內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 使用Python的Flask框架表單插件Flask-WTF實現Web登錄驗證

標簽:渭南 雅安 辛集 許昌 西安 贛州 濰坊 七臺河

巨人網絡通訊聲明:本文標題《Flask wtforms實現表單驗證使用》,本文關鍵詞  Flask,wtforms,實現,表單,驗證,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Flask wtforms實現表單驗證使用》相關的同類信息!
  • 本頁收集關于Flask wtforms實現表單驗證使用的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区三区加勒比av| 欧美视频在线播放| 国产精品女人毛片| 9191精品国产综合久久久久久| 国产综合一区二区| 午夜亚洲国产au精品一区二区| 亚洲精品一区二区精华| 欧美老年两性高潮| 看电视剧不卡顿的网站| 日韩欧美一级二级三级久久久| 国产在线乱码一区二区三区| 色婷婷综合激情| 美女国产一区二区三区| 日韩欧美国产成人一区二区| 色综合欧美在线| 日韩理论在线观看| 欧美日本国产一区| 国产在线视视频有精品| 亚洲欧美日韩国产成人精品影院| 欧美在线观看一区| 国产在线不卡一区| 夜夜精品浪潮av一区二区三区| 欧美成人午夜电影| 欧美亚洲免费在线一区| 国产美女视频91| 日韩国产精品大片| 久久尤物电影视频在线观看| 91黄色激情网站| 国产成人99久久亚洲综合精品| 亚洲欧洲国产专区| 久久久国产综合精品女国产盗摄| 91国产成人在线| 国产成人综合亚洲网站| 夜夜爽夜夜爽精品视频| 国产精品美女久久久久高潮| 久久久亚洲欧洲日产国码αv| 欧美精品在欧美一区二区少妇| 国产白丝精品91爽爽久久| 麻豆精品在线播放| 精品一区中文字幕| 午夜在线成人av| 亚洲激情欧美激情| 一区二区理论电影在线观看| 亚洲美女淫视频| 亚洲美女屁股眼交3| 亚洲综合自拍偷拍| 成人a免费在线看| 99re66热这里只有精品3直播| 欧美一级在线视频| 欧美高清一级片在线观看| 日韩黄色一级片| 欧美日韩成人激情| 亚洲日本一区二区| 亚洲国产裸拍裸体视频在线观看乱了 | 精品一区二区精品| 亚洲精品成人a在线观看| 国产精品成人一区二区艾草| 亚洲国产综合在线| 粉嫩嫩av羞羞动漫久久久 | 极品销魂美女一区二区三区| 国产不卡免费视频| 日韩精品一区二区三区四区| 久久久久久久精| 久久国产精品免费| 欧洲色大大久久| 亚洲免费观看高清完整版在线观看熊| 成人黄色a**站在线观看| 91香蕉视频mp4| 亚洲欧美日韩中文播放| 日本高清成人免费播放| 亚洲资源在线观看| 欧美自拍偷拍午夜视频| 图片区日韩欧美亚洲| 欧美一区二区二区| 国内成人精品2018免费看| 精品免费一区二区三区| 久久亚洲精华国产精华液| 国内外成人在线| 亚洲国产综合在线| 99视频在线观看一区三区| 国产精品18久久久久久久久| 亚洲成人av一区二区| 中文字幕在线播放不卡一区| 中文字幕中文字幕中文字幕亚洲无线| 亚洲美女一区二区三区| 国产欧美日本一区视频| 色婷婷综合久久久久中文 | 5月丁香婷婷综合| 黄色资源网久久资源365| 国产精品美女久久久久久久久久久| 91啪九色porn原创视频在线观看| 香蕉久久一区二区不卡无毒影院| www国产精品av| 色婷婷综合在线| 极品瑜伽女神91| 亚洲精品成人少妇| 久久蜜桃av一区精品变态类天堂| 91免费版在线| 精品一区二区三区日韩| 一区二区三区日本| 国产香蕉久久精品综合网| 欧美日韩极品在线观看一区| www.日本不卡| 捆绑调教一区二区三区| 亚洲黄网站在线观看| 久久精品在线免费观看| 在线成人免费观看| 91在线视频播放地址| 捆绑紧缚一区二区三区视频| 一区二区三区久久| 国产喂奶挤奶一区二区三区| 7777精品伊人久久久大香线蕉最新版 | 激情深爱一区二区| 夜色激情一区二区| 中文字幕免费在线观看视频一区| 欧美一区二区三区日韩视频| 精品视频123区在线观看| 色综合天天性综合| 国产98色在线|日韩| 精品卡一卡二卡三卡四在线| 三级一区在线视频先锋 | 久久久激情视频| 黑人巨大精品欧美一区| 26uuu国产在线精品一区二区| 日韩不卡一区二区| 日韩欧美一级精品久久| 国产一区二区女| 一区二区三区四区激情| 精品奇米国产一区二区三区| 国产精品一级黄| 亚洲bt欧美bt精品777| 亚洲精品在线三区| 不卡视频免费播放| 日日夜夜免费精品| 日韩一级欧美一级| 91视视频在线观看入口直接观看www | 最新成人av在线| 亚洲人成影院在线观看| 久久99久久99精品免视看婷婷| 免费黄网站欧美| 亚洲国产精品一区二区www | 蜜臀a∨国产成人精品| 五月激情丁香一区二区三区| 偷拍一区二区三区| 日韩 欧美一区二区三区| 日本不卡一区二区| 久久av中文字幕片| 午夜视频在线观看一区二区三区| 中文字幕精品一区二区三区精品| 色狠狠一区二区| 国产精品一区三区| 舔着乳尖日韩一区| 一区二区三区蜜桃| 亚洲精品网站在线观看| 国产.欧美.日韩| 日本一不卡视频| 亚洲一区二区三区爽爽爽爽爽| 国产精品久久久99| 日本丶国产丶欧美色综合| 欧美久久免费观看| 中文字幕在线不卡视频| 日韩欧美国产综合| 久久亚区不卡日本| 国产精品久久久久久久久图文区 | 欧美三级三级三级爽爽爽| 7777精品伊人久久久大香线蕉超级流畅 | 日本人妖一区二区| 久久精品国产网站| 岛国精品在线观看| 在线欧美日韩精品| 日韩精品一区二| 国产色婷婷亚洲99精品小说| 依依成人综合视频| 国精产品一区一区三区mba桃花| av不卡在线播放| 欧美日本韩国一区二区三区视频| 亚洲精品在线电影| 亚洲图片你懂的| 人人精品人人爱| 国产不卡免费视频| 欧美人牲a欧美精品| 国产午夜亚洲精品午夜鲁丝片| 亚洲精品国产视频| 韩国av一区二区三区在线观看| 99视频一区二区| 538在线一区二区精品国产| 欧美国产精品久久| 亚洲午夜久久久久久久久电影院| 国产精品一区二区黑丝| 欧美日韩国产天堂| 国产三级精品三级| 午夜伊人狠狠久久| 成人av电影在线网| 日韩欧美一级在线播放| 亚洲免费在线视频| 国产传媒一区在线| 717成人午夜免费福利电影| 亚洲欧洲日产国码二区| 久久国产精品99久久人人澡| 91蜜桃网址入口|