flask(四)
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(四)的更多相关文章
- Flask 四剑客
Flask 四剑客 返回字符串,返回 html , 跳转路由,返回 json from flask import Flask, render_template, redirect, jsonify a ...
- Flask - 四剑客 | templates | 配置文件 | 路由系统 | CBV
Flask框架简介 说明:flask是一个轻量级的web框架,被称为微型框架.只提供了一个高效稳定的核心,其它全部通过扩展来实现.意思就是你可以根据项目需要进行量身定制,也意味着你需要不断学习相关的扩 ...
- Flask (四) 模型进阶
模型进阶 多对多关联 用户收藏电影,一个用户可以收藏多部电影, 一部电影可以被不同的用户收藏, 是一个多对多关系. # 中间表(不是模型) collects = db.Table('collect ...
- Flask 四种响应类型
1 直接返回字符串 可以返回状态码 @app.route('/testresponse', methods=['GET', 'POST']) def testresponse(): return &q ...
- web 部署专题(四):压力测试(二)压力测试实例 flask 四种wsgi方式对比(tornado,Gunicorn,Twisted,Gevent)
使用工具:siege 代码结构: hello.py templates |--hello.html hello.py代码: from flask import Flask, render_templa ...
- 用它5分钟以后,我放弃用了四年的 Flask
有一个非常简单的需求:编写一个 HTTP接口,使用 POST 方式发送一个 JSON 字符串,接口里面读取发送上来的参数,对其中某个参数进行处理,并返回. 如果我们使用 Flask 来开发这个接口,那 ...
- 初步了解学习flask轻量级框架,
关于flask我有话说 flask作为一个轻量级框架,它里面有好多扩展包需要下载,比较麻烦,而且有的时候flask需要在虚拟环境下运行,但是他的优点还是有滴 ,只要是用过Django的人,都会觉得fl ...
- Python Flask Web 框架入门
Python Flask 目录 本文主要借鉴 letiantian 的文章 http://www.letiantian.me/learn-flask/ 一.简介 二.安装 三.初始化Flask 四.获 ...
- python中常用第三方库记录
python中有很多很好用的第三方库,现在记录一下这些库以及如何下载 一.virtualenv,这是一个可以将生产环境隔离开的python库,非常好用 在linux下使用pip install vir ...
随机推荐
- 使用CreateThread函数和_beginThreadex函数的注意事项
作者:朱金灿 来源:http://blog.csdn.net/clever101 使用CreateThread函数创建线程时,类或结构体的变量作为CreateThread函数传递给线程函数的参数需要避 ...
- JPEG图像扩展信息读取和修改
最近,项目需要使用jpg图像信息被写入(非水印),经过研究发现,Android已封装的读者jpg图片扩展信息api(ExifInterface). 通讯api住址:http://developer.a ...
- SWFTools PDF转换为SWF
前言 在iText 制作PDF这篇博文中只是简单的介绍了如何制作PDF,为了能让PDF在Web页面中显示,我还需要通过SWFTools工具将PDF文件转换为SWF文件,然后通过SWF文件显示在Web网 ...
- 【转】mybatis 一对一与一对多collection和association的使用
转自:https://www.cnblogs.com/yansum/p/5819973.html (有修改和补充,红色字体部分) 在mybatis如何进行一对一.一对多的多表查询呢?这里用一个简单 ...
- listview选中滑动时背景变黑
喵的今天调这个一直以为是背景色的问题,花了好多时间 下面才是解决方法:转自:http://daijun74.iteye.com/blog/1175143 手指在ListView上下滚动时,ListVi ...
- OpenGL(十四) 模板测试
启用模板测试时,OpenGL会在内存中开辟一块空间作为模板缓冲区,里边保存了每个像素的"模板值",模板测试的过程就是把每一个像素的模板值与一个设定的模板参考值进行比较,符合设定条件 ...
- HDU 2845 Beans(dp)
Problem Description Bean-eating is an interesting game, everyone owns an M*N matrix, which is filled ...
- “TNS-03505:无法解析名称”问题解决一例
1. 问题情境 开发人员,在windows新环境ORACLEclient.配置"tnsnames.ora"后,准备连接Linux环境的ORACLE数据库,使用tnsping报TN ...
- 两个同名controller导致调用崩溃
之前遇到一个很诡异的bug,大概情况如下: 生成成功,运行正常,调试正常 但是调用目标controller的目标方法,运行自动中断,调试自动中断 没有任何明确的错误提示,包括调试都没有弹窗报错 调用其 ...
- shell脚本自动化安装LAMP
#!/bin/bash#auto make install LAMP#by authors yehailun #arp和apr-util依赖APR_FILES=apr-1.6.2.tar.gz APR ...