flask-day10:flask_wtf|flask_bootstraps|flash消息|cookie|session

flask_wtf

flask_wtf不是flask_wtforms.它主要和flask_bootstrap一起美化表单.

  1. 安装pip install flask_wtforms / pip install flask_bootstrap
  2. forms.py
# ---coding:utf-8----
# 文件名: forms.py
# @Time:2020/4/28 22:06
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class NameFrom(FlaskForm):   # 用flask_wtf渲染和验证表单元素
    name = StringField('用户名',validators=[DataRequired()])
    submit = SubmitField("提交")
  1. app.py
from flask import Flask, request, render_template
from flask_bootstraps import Bootstrap
from forms import NameFrom

app = Flask(__name__)
app.config['SECRET_KEY'] = "ASDFSFadf"  # 需要csrf防止跨域攻击
bootstrap = Bootstrap(app)     # 将app与bootstrap绑定并实例化

@app.route('/')
def index():
    form = NameFrom(request.form)       # form是包含请求的被flask_wtf渲染验证的表单元素 
    name = form.name.data   # 表单实例中为name的数据
    if form.validate():
    	print(name)
    return render_template('index.html',form=form)   #返回响应给模板
  1. index.html
{% extends 'bootstrap/base.html' %}   #继承bootstrap base.html
{% import 'bootstrap/wtf.html' as wtf %}  # 导入bootstrap wtf宏

{% block title %}
    首页
{% endblock %}

{% block content %}
	<h1>{{name}}</h1>
    <div class="container">
        {{ wtf.quick_form(form) }}   # 生成表单元素
    </div>
{% endblock %}

使用flask的flash发布警告提示信息

  1. forms.py同上
  2. app.py增加flash的信息
  3. index.html遍历flash信息并显示在页面上
    app.py:
from flask import Flask, request, render_template, flash
from flask_bootstraps import Bootstrap
from forms import NameFrom
app = Flask(__name__)
app.config['SECRET_KEY'] = "asdfadfsfs"
bootstrap = Bootstrap(app)

@app.route('/',methods=['GET','POST'])
def index():
    form = NameFrom()
    name = form.name.data
    if form.validate():
        if name and name != "Jelly":   
            flash("你不是Jelly")    #第一条提示信息
            flash("你是那谁")          # 第二条提示信息
    return render_template('index.html',form=form,name=name)
if __name__ == '__main__':
    app.run(debug=True)

{% extends 'bootstrap/base.html' %}
{% import 'bootstrap/wtf.html' as wtf %}

{% block title %}
    首页
{% endblock %}

{% block content %}
    <h1>{{ name }}</h1>
    {% for message in get_flashed_messages() %}    #遍历app.py中的提示信息
        <div class="alert alert-warning alert-dismissible" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <strong>Warning!</strong>    #bootstarp警告框样式
        <div>{{ message }}</div>    #分别显示遍历的两条信息
        </div>
    {% endfor %}
    <div class="container">
        {{ wtf.quick_form(form) }}
    </div>
{% endblock %}

cookie

1.app.py 设置cookie resp.set_cookie

from datetime import datetime
from flask import Flask, Response
app = Flask(__name__)
app.config['SERVER_NAME'] = 'lai.com:5000'

@app.route('/')
def hello_world():
    resp = Response("QFjy")
    expires = datetime(year=2020,month=10,day=20,hour=21,minute=23,second=10)
    resp.set_cookie('nickname','宋江',expires=expires,max_age=120,domain=".lai.com") #设置cookie
    return 'set cookie'

@app.route('/del')
def delete_cookie():
    resp = Response("delete cookie") 
    resp.delete_cookie('nickname') #删除cookie
    return resp

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

访问:http://lai.com:5000/ ;http://lai.com:5000/del

session

保存在服务器,使用session.get('name"),session.clear()
Flask中的session是通过from flask import session。然后添加值key和value进去即可。并且,Flask中的session机制是将session信息加密,然后存储在cookie中。专业术语叫做client side session

from flask import Flask,render_template,flash,session
from forms import NameFrom
from flask_bootstrap import Bootstrap
app = Flask(__name__)
app.config['SECRET_KEY'] = 'asdf123321'
bootstrap = Bootstrap(app)

@app.route('/',methods=['GET','POST'])
def index():
    form = NameFrom()
    if form.validate():
    # if form.validate_on_submit():
        lastname = session.get('name') #查出上一次输入的内容
        if lastname and lastname != form.name.data:
            flash("大哥,名字换的挺快啊")
            flash("你笑我凉的快,我笑你玩的少")
        session['name'] = form.name.data
    name = session.get('name')
    return render_template('index.html',form=form,name=name)

@app.route('/del/')
def del_session():
    print(session.get('name'))
    session.clear() #删除session
    print(session.get('name'))
    return '删除成功'

if __name__ == '__main__':
    app.run(debug=True,port=5055)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值