1.Flask-Session

from flask import session,Flask
from flask_session import Session #导入
from redis import Redis
app=Flask(__name__)
#1.session的配置
app.config["SESSION_TYPE"]="redis"
app.config["SESSION_REDIS"]=Redis(host="127.0.0.1",port=6379,db=6) Session(app) #2.定义使用该session的app #3.存与取使用
@app.route('/let')
def let():
session["user"]="shy"
return 'ok' @app.route("/get")
def get():
print(session["user"])
return 'okok'
app.run('0.0.0.0',5000,debug=True)

flask中的session需要执行session_interface-------open_session

注:字典的setfefault方法

dict.setdefault(key,default=None)
#如果键不存在于字典中,将会添加键并将值设为默认值。

2.WTForms(相当于Django的modelform)

登录页面

from wtforms.fields import simple,core
from wtforms import Form
from wtforms import validators
from flask import Flask,request,render_template app=Flask(__name__) class LoginForm(Form):
username = simple.StringField(
label="用户名", # 标签标记
validators=[validators.DataRequired(message='用户名不能为空'),validators.Length(min=3,max=5,message="过长或过短")], # 不能为空
# descripyion="ffff", # 描述标记
id="user_name", # 标签id
default=None,
# widget= #input输入框,已经被实例化了
render_kw=None,
) # 实例化
password = simple.PasswordField(
label="密码", # 标签标记
validators=[
validators.DataRequired(message='密码不能为空'),
validators.Email(message="密码必须符合邮箱规则"),
], # 不能为空
# descripyion="", # 描述标记
id="password", # 标签id
# widget= #input输入框,已经被实例化了
render_kw=None,
) @app.route("/get",methods=['GET','POST'])
def index():
print(111111111)
if request.method == "GET":
print(222)
fm = LoginForm()
print(33)
return render_template("index.html", wtf=fm)
else:
print(55555)
new_fm = LoginForm(request.form)
print(new_fm)
if new_fm.validate():
return new_fm.data.get("username")
else:
return render_template("index.html", wtf=new_fm)
app.run('0.0.0.0',5000)

注册页面

from wtforms.fields import simple.core
from wtforms import Form
from wtforms import validators class LogonForm(Form):
username=simple.StringField(
label="用户名",#标签标记
validators=[validators.Daterequire(message='用户名不能为空')],#不能为空
descripyion="",#描述标记
id="user_name",#标签id
#widget= #input输入框,已经被实例化了
render_kw=None,
)#实例化
password=simple.PasswordField(
label="密码",#标签标记
validators=[validators.Equalto(fieldname='password',message='密码两次输入不一致')],
descripyion="",#描述标记
id="user_name",#标签id
#widget= #input输入框,已经被实例化了
render_kw=None,
)
repassword=simple.PasswordField(
label="再次输入密码",#标签标记
validators=[
validators.Daterequire(message='密码不能为空'),
validators.Email(message="密码必须符合邮箱规则"),
],#不能为空
descripyion="",#描述标记
id="user_name",#标签id
#widget= #input输入框,已经被实例化了
render_kw=None,
)
gender=core.RadioField(
label='性别',
coerce=int,
choices=(
(1,'女'),
(2,'男')
),
defaule=1,
)
hobby=core.SelectMultipleField(
label='爱好',
coerce=int,#获取到的数据类型,如果改成str,choice和defaule也要改
choices=(
(1,'抽烟'),
(2,'喝酒'),
(3,'烫头'),
(4,'撸串'),
),
defaule=(1,2,3),
validators=[validators.Length(min=2,max=4,message='爱好不能太多太少')]
),
@app.route("/reg",method)
def reg():
if request.method=="GET":
rf=LoginForm()
return render_template("index.html",wtf=rf)
else:
rf=LoginForm(request.path)
if rf.validate():
return rf.data.get("username")
else:
return render_template("index.html",wtf=rf)

flask(四)的更多相关文章

  1. Flask 四剑客

    Flask 四剑客 返回字符串,返回 html , 跳转路由,返回 json from flask import Flask, render_template, redirect, jsonify a ...

  2. Flask - 四剑客 | templates | 配置文件 | 路由系统 | CBV

    Flask框架简介 说明:flask是一个轻量级的web框架,被称为微型框架.只提供了一个高效稳定的核心,其它全部通过扩展来实现.意思就是你可以根据项目需要进行量身定制,也意味着你需要不断学习相关的扩 ...

  3. Flask (四) 模型进阶

    模型进阶 多对多关联 用户收藏电影,一个用户可以收藏多部电影, 一部电影可以被不同的用户收藏, 是一个多对多关系. ​ # 中间表(不是模型) collects = db.Table('collect ...

  4. Flask 四种响应类型

    1 直接返回字符串 可以返回状态码 @app.route('/testresponse', methods=['GET', 'POST']) def testresponse(): return &q ...

  5. web 部署专题(四):压力测试(二)压力测试实例 flask 四种wsgi方式对比(tornado,Gunicorn,Twisted,Gevent)

    使用工具:siege 代码结构: hello.py templates |--hello.html hello.py代码: from flask import Flask, render_templa ...

  6. 用它5分钟以后,我放弃用了四年的 Flask

    有一个非常简单的需求:编写一个 HTTP接口,使用 POST 方式发送一个 JSON 字符串,接口里面读取发送上来的参数,对其中某个参数进行处理,并返回. 如果我们使用 Flask 来开发这个接口,那 ...

  7. 初步了解学习flask轻量级框架,

    关于flask我有话说 flask作为一个轻量级框架,它里面有好多扩展包需要下载,比较麻烦,而且有的时候flask需要在虚拟环境下运行,但是他的优点还是有滴 ,只要是用过Django的人,都会觉得fl ...

  8. Python Flask Web 框架入门

    Python Flask 目录 本文主要借鉴 letiantian 的文章 http://www.letiantian.me/learn-flask/ 一.简介 二.安装 三.初始化Flask 四.获 ...

  9. python中常用第三方库记录

    python中有很多很好用的第三方库,现在记录一下这些库以及如何下载 一.virtualenv,这是一个可以将生产环境隔离开的python库,非常好用 在linux下使用pip install vir ...

随机推荐

  1. instsrv.exe用法

    这个小工具是用以安装和卸载可执行的服务和指派服务名给这些可执行的服务的.     一:绑定程序和服务 这里我们设定要将F:\cpu.exe 以 abc 的名称显示作为服务的话,我们应当这样子做: 在开 ...

  2. burp suite中国乱码的解决方案

    于http的response还有经常出现乱码,其实解决的办法很easy 首先点击Options标签, 然后找到display 找到http message display watermark/2/te ...

  3. 十分钟了解 spring cloud

    1 为什么需要服务发现 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB.KV,去掉重量级ESB),并且强调DevOps和快 ...

  4. Spring实战5-基于Spring构建Web应用

    主要内容 将web请求映射到Spring控制器 绑定form参数 验证表单提交的参数 写在前面:关于Java Web,首先推荐一篇文章——写给java web一年左右工作经验的人,这篇文章的作者用精练 ...

  5. Win7 32bit下一个hadoop2.5.1源代码编译平台的搭建各种错误遇到

    从小白在安装hadoop困难和错误时遇到说起,同时,我们也希望能得到上帝的指示. 首先hadoop更新速度非常快,最新的是hadoop2.5.1,因此就介绍下在安装2.5.1时遇到的各种困难. 假设直 ...

  6. Java设计模式透析之 —— 单例(Singleton)

    写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据.但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像f ...

  7. Windows 10 应用创建模糊背景窗口的三种方法

    原文 Windows 10 应用创建模糊背景窗口的三种方法 现代的操作系统中创建一张图片的高斯模糊效果非常容易,不过如果要在窗口中获得模糊支持就需要操作系统的原生支持了.iOS/Mac 和 Windo ...

  8. 1 tcp/ip协议

    该协议是一个协议族,并是说具体某个协议下图中的协议都属于tcp/ip协议.他是用来规范互联网中电脑间数据传输的. 该协议可以分为4层或者7层 4层,实际层数: 链路层 网络层 传输层 应用层 7层,理 ...

  9. Matlab 版本和支持问题

    从 Matlab 2013版本开始,matlab 将可以直接调用 gpu 进行并行计算,而不再需要安装 GPUmat 工具箱: 随机化: old:rand(")/randn(", ...

  10. 安装Eclipse完PyDev插件中没有出现

    假设你是在Window7在环境搭建.请确保您使用以管理员身份运行Eclipse. PyDev插件安装后没有显示是由于PyDev的执行须要Java7,能够通过升级JDK的版本号来完毕,而且配置环境变量( ...