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. C#之Linq、where()、FindAll()的区别

    原地址 C#之Linq.where().FindAll()的区别 对于实现了IEnumerable接口的类.类型.集合可以使用Linq.Linq的扩展方法where().FindAll()来查询符合谓 ...

  2. Android经常使用UI包裹 - EditText

    EditText的信息接受用户输入是最重要的Android UI包裹,您可以使用EditText.getText()获取它的文本内容. 实例:EditTextDemo 执行效果: watermark/ ...

  3. WinForm - 无边框窗体自定义移动

    为了界面的好看,有时候需要将窗体FormBorderStyle属性设为None,这样就可以根据自己的喜欢来设计界面.但这样窗体无法进行移动的.而且默认的窗体(FormBorderStyle=Sizab ...

  4. SQL SERVER配置[转]

    感谢shuhao,sql server的配置都是他教的,下面是他写的总结,方便自己以后使用 总结一下,感觉比较实用.------------------------------------------ ...

  5. Java10 新特性

    Java 10 新特性 这次发布的 Java 10,新带来的特性并不多. 根据官网公开资料,共有 12 个 JEP(JDK Enhancement Proposal 特性加强提议),带来以下加强功能: ...

  6. Gram 矩阵性质及应用

    v1,v2,-,vn 是内积空间的一组向量,Gram 矩阵定义为: Gij=⟨vi,vj⟩,显然其是对称矩阵. 其实对于一个XN⋅d(N 个样本,d 个属性)的样本矩阵而言,X⋅X′ 即为 Gram ...

  7. spring boot——结合docker

    spring boot——结合docker 前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 liunx机器上,也可以实现虚 ...

  8. SQLite从Excel文件中导入数据

    元数据 另存为.csv格式 用记事本打开 打开后的数据 Android客户端开发的时候使用了SQLite数据库,为了测试,需要将一些excel文件中的数据导入到数据库的表中,下面是几个步骤: 数据库表 ...

  9. 简单IO,将一段字符串存入一个记事本

    using System; using System.IO; using System.Text; namespace 字符串存入记事本 { class Program { static void M ...

  10. ios7 左右searchbar在设置cancelButton的title属性

    经 [searchBarsetShowsCancelButton:YES];设置之后默认是"cancel",想改为中文的 在stackoverflow上參考了非常多方法都没用 这里 ...