博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask学习 三 web表单
阅读量:7088 次
发布时间:2019-06-28

本文共 2991 字,大约阅读时间需要 9 分钟。

web表单

pip install flask-wtf

实现csrf保护

app.config['SECRET_KEY']='hard to guess string' # 可以用来存储框架,扩展,程序等的配置变量
#支持的字段StringField                 文本字段TextAreaField               多行文本字段PasswordField               密码文本字段HiddenField                 隐藏文本字段DateField                   文本字段,值为datetime.date格式DateTimeField               文本字段,值为datetime.datetime格式IntegerField                文本字段,值为整数DecimalField                文本字段,值为decimal.DecimalFloatField                  文本字段,值为浮点数BooleanField                复选框RadioField                  一组单选框SelectField                 下拉列表SelectMultipleField         下拉列表,可选择多个值FileField                   文本上传字段SubmitField                 表单提交FormField                   把表单作为字段嵌入另一个表单FieldList                   一组指定类型的字段

 

#验证函数Email             验证电子邮件地址EqualTo           比较两字段值,常用于要求输入两次密码确认IPAddress         验证IPv4网络地址Length            验证输入字符串长度NumberRange       验证输入的值在数字范围内Optional          无输入值时跳过其他验证函数Required          确保字段中的数据Regexp            使用正则表达式验证输入值URL               验证URLAnyOf             确保输入值在可选值列表中NoneOf            确保输入值不在可选值列表中
# app.py from flask_wtf import FlaskFormfrom wtforms import StringField,SubmitFieldfrom wtforms.validators import DataRequiredapp.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 

Hello,{% if name %}{
{ name }}{% else %}Stranger{% endif %}!

# 利用bootstrap form渲染表单{
{ wtf.quick_form(form) }}

 重定向,会话,flash消息

from flask import Flask, render_template,session,redirect,url_for,flashfrom flask_bootstrap import Bootstrapfrom flask_wtf import FlaskFormfrom wtforms import StringField, SubmitFieldfrom wtforms.validators import DataRequiredapp = 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() %}    
{
{ message }}
{% endfor %}
base.html增加
{
{ wtf.quick_form(form) }}
index

 

转载于:https://www.cnblogs.com/Erick-L/p/6875066.html

你可能感兴趣的文章
PowerDesigner生成sql脚本时去掉双引号并把字段名设为大写
查看>>
2015.3.7 Dll CString不能作为传入参数而要用char*
查看>>
变量的作用域
查看>>
【设计模式】06-代理模式
查看>>
poi解析Excel文件版本问题
查看>>
广告悬浮框相关制作
查看>>
200 from memory cache / from disk cache / 304 Not Modified 区别
查看>>
IPython与Jupyter Notebook
查看>>
虚拟内存
查看>>
Words For Today [2011-07-24]
查看>>
[转] 使用moment.js轻松管理日期和时间
查看>>
[转] 详解webpack-dev-server的使用
查看>>
【leetcode】491. Increasing Subsequences
查看>>
dp入门(先摆在这里,之后细细读)
查看>>
域名删除时间常识
查看>>
springmvc自定义日期编辑器
查看>>
CSS-移动端页面(响应式)
查看>>
微信小程序分页加载数据~上拉加载更多~小程序云数据库的分页加载
查看>>
iOS下JS与OC互相调用(四)--JavaScriptCore
查看>>
Tomcat设置为系统服务,并随系统自动启动服务
查看>>