Flask學習 三 web表單

web表單html

pip install flask-wtfweb

實現csrf保護正則表達式

app.config['SECRET_KEY']='hard to guess string' # 能夠用來存儲框架,擴展,程序等的配置變量
#支持的字段
StringField                 文本字段
TextAreaField               多行文本字段
PasswordField               密碼文本字段
HiddenField                 隱藏文本字段
DateField                   文本字段,值爲datetime.date格式
DateTimeField               文本字段,值爲datetime.datetime格式
IntegerField                文本字段,值爲整數
DecimalField                文本字段,值爲decimal.Decimal
FloatField                  文本字段,值爲浮點數
BooleanField                複選框
RadioField                  一組單選框
SelectField                 下拉列表
SelectMultipleField         下拉列表,可選擇多個值
FileField                   文本上傳字段
SubmitField                 表單提交
FormField                   把表單做爲字段嵌入另外一個表單
FieldList                   一組指定類型的字段

 

#驗證函數
Email             驗證電子郵件地址
EqualTo           比較兩字段值,經常使用於要求輸入兩次密碼確認
IPAddress         驗證IPv4網絡地址
Length            驗證輸入字符串長度
NumberRange       驗證輸入的值在數字範圍內
Optional          無輸入值時跳過其餘驗證函數
Required          確保字段中的數據
Regexp            使用正則表達式驗證輸入值
URL               驗證URL
AnyOf             確保輸入值在可選值列表中
NoneOf            確保輸入值不在可選值列表中
# app.py
from
flask_wtf import FlaskForm from wtforms import StringField,SubmitField from wtforms.validators import DataRequired app.config['SECRET_KEY']='hard to guess string' # 能夠用來存儲框架,擴展,程序等的配置變量 class NameForm(FlaskForm): name = StringField('姓名',validators=[DataRequired()]) submit = SubmitField('提交') @app.route ('/',methods=['get','post']) def index1(): name=None form=NameForm() if form.validate_on_submit(): name=form.name.data form.name.data='' return render_template('index.html',name=name,form=form,current_time = datetime.utcnow())
# if
<h1>Hello,{% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1>
# 利用bootstrap form渲染表單 {{ wtf.quick_form(form) }}

 重定向,會話,flash消息flask

from flask import Flask, render_template,session,redirect,url_for,flash
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard to guess string'  # 能夠用來存儲框架,擴展,程序等的配置變量


class NameForm(FlaskForm):
    name = StringField('姓名', validators=[DataRequired()])
    submit = SubmitField('提交')


bootstrap = Bootstrap(app)
moment = Moment(app)


@app.route('/', methods=['get', 'post'])
def index1():
    name = None
    form = NameForm()
    if form.validate_on_submit():
        old_name = session.get('name')
        if old_name is not None and old_name != form.name.data:
            flash('看來你改變了名字')
        session['name']=form.name.data
        return redirect(url_for('index1'))
    return render_template('index.html', name=session.get('name'), form=form, current_time=datetime.utcnow())

if __name__ == '__main__':
    app.run(debug=True)
app
{% for message in get_flashed_messages() %}
    <div class="alert alert-warning">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        {{ message }}
    </div>
    {% endfor %}
base.html增長
{{ wtf.quick_form(form) }}
index
相關文章
相關標籤/搜索