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. Spring boot quartz的相关资源

    https://github.com/82253452/banner https://github.com/lvhao/schedule-job/tree/master/src/main/java/c ...

  2. base64编码转图片

    protected void Button1_Click(object sender, EventArgs e) { //strImg为base64编码的图片字符串 string strImg = & ...

  3. events(事件): 基础1

    1    所有能触发事件的对象都是 EventEmitter 类的实例. 这些对象开放了一个 eventEmitter.on() 函数,允许将一个或多个函数绑定到会被对象触发的命名事件上. 事件名称通 ...

  4. poj 3071 可能DP

    http://poj.org/problem? id=3071 推方程不难,可是难在怎么算 dp[i][j]表示第i场时第j仅仅队伍存活下来的概率 方程:dp[i][j]=sigma(dp[i-1][ ...

  5. WPF文字描边的解决方法

    原文:WPF文字描边的解决方法  由于项目原因,今天研究了一下午WPF的文字描边,网上这方面的资料奇少,搞了半天才发现强大的WPF原来不直接支持文字描边啊.最后求助于MSDN,找到了方案,和大家分 ...

  6. C#中的MessageBox消息对话框

    关键字:C# MessageBox 消息对话框 在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示.在C#中,MessageBox消 ...

  7. Linux性能测试 top命令

    原文地址:http://www.cnblogs.com/txw1958/archive/2012/07/25/linux-top-command.html top命令是Linux下常用的性能分析工具, ...

  8. python 教程 第十九章、 图形界面编程

    第十九章. 图形界面编程 import Tkinter top = Tkinter.Tk() hello = Tkinter.Label(top, text='Hello World!') hello ...

  9. UVALive 6485 Electric Car Rally (BFS,PQ)

    https://icpcarchive.ecs.baylor.edu/index.php? option=com_onlinejudge&Itemid=8&page=show_prob ...

  10. 【Android发展】它Fragment发展1

    一直知道Fragment非常强大.可是一直都没有去学习,如今有些空暇的时间,所以就去学习了一下Fragment的简单入门.我也会把自己的学习过程写下来,假设有什么不足的地方希望大牛指正,共同进步. 一 ...