Flask的简单认识
Flask的简单认识
Flask是轻量级的框架,适用于简单的程序
与Django的比较:
Django: 无socket,中间件,路由,视图(CBV,FBV),模板,ORM, cookie,session,缓存,序列化,Form,信号.....
flask: 无socket,中间件(需要扩展),路由,视图(CBV,FBV),第三方模板(jinja2),cookie,session
Flask 的网络通信, 依赖于 werkzeug模块(实现了wsgi协议的模块 )
wsgi
web 服务网关接口协议
请求 -->> socket接听 -->> web应用
实现wsgi协议的模块
本质:创建socket监听请求和转发请求
Flask 的启动入口
wsgi.py
from werkzeug.wrappers import Request, Response
@Request.application
def hello(request):
return Response('Hello World!')
if __name__ == '__main__':
from werkzeug.serving import run_simple
run_simple('localhost', 4000, hello)
flask
from flask import Flask
# 实例化Flask对象
app = Flask(__name__)
# 生成路由关系,并把关系保存到 app.url_map
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
# 启动程序,监听用户请求
# 一旦请求到来,执行 app._ _call _ _方法
# 封装用户请求
# 进行路由匹配




>**Flask 的路由系统**
(1)装饰器与路由系统 捆绑到一起
常用
@app.route('/')
def hello_world():
return 'Hello World!'
(2) app.add_url_rule('/','hello_world',hello_world)
def hello_world():
return 'Hello World!'
app.add_url_rule('/','hello_world',hello_world)
( 3 ) 带参数的装饰器 -- flask 的路由系统
装饰器
有参数的装饰器, 形成闭包 把参数传给inner使用
@app.route('/')
def hello_world():
return 'Hello World!'
def route(self, rule, **options):
def decorator(f):
endpoint = options.pop('endpoint', None)
self.add_url_rule(rule, endpoint, f, **options)
return f
return decorator
无参数的装饰器
def wrapper(func):
def inner(*args,**kwargs):
print('hello')
return func(*args,**kwargs)
return inner
@wrapper
def func(arg):
print(arg)
Flask 的 render_template
导入
from flask import render_template
指定模板文件夹
app = Flask(__name__,template_folder='templates',static_url_path='/static/',static_folder='static')
返回数据给模板
return render_template('login.html',msg=msg)
Flask 的 request
指定请求方式
@app.route('/login',method=['GET','POST'])
def login():
return render_template('login.html')
request的数据
print(request) #<Request 'http://127.0.0.1:5000/login' [POST]>
print(request.query_string)
print(request.args) # get 请求的参数
print(request.values) # 全部的请求参数 CombinedMultiDict([ImmutableMultiDict([('v', '123')]), ImmutableMultiDict([])])
print(request.form) # post 请求的参数
Flask 的 静态文件
配置 static文件目录,和 path
app = Flask(__name__,template_folder='templates',static_url_path='/static/',static_folder='static')
src
"{{ url_for('static',filename='1.png') }}"
"/static/1.png"
Flask 的 session -- secret key配置
session (所有的都放到浏览器) | django的session 是放在服务端
session_id -- cookie
放在浏览器,减轻服务端压力
app.config['SECRET_KEY'] = 'sadsada2321312' # 用serect_key 加盐加密
登录小 demo
from flask import Flask,render_template,request,session,redirect
app = Flask(__name__,template_folder='templates',static_url_path='/static/',static_folder='static')
app.config['SECRET_KEY'] = 'sadsada2321312'
@app.route('/',methods=['GET'])
def hello_world():
user = session.get('user','')
if user:
return 'Hello World!'
else:
return redirect('/login')
@app.route('/login',methods=['GET','POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
user = request.values.get('user')
if user:
session['user'] = user
return redirect('/')
else:
msg = '用户名密码错误'
return render_template('login.html',msg=msg)
if __name__ == '__main__':
app.run()
Flask的简单认识的更多相关文章
- 使用Flask开发简单接口
作为测试人员,在工作或者学习的过程中,有时会没有可以调用的现成的接口,导致我们的代码没法调试跑通的情况. 这时,我们使用python中的web框架Flask就可以很方便的编写简单的接口,用于调用或调试 ...
- Python: Flask框架简单介绍
接触Python之后我第一次听说Flask,我就根据自己搜罗的知识尽可能简洁的说出来.如果不准确的地方还请指正,谢谢. Flask是什么? Flask是基于Python编写的微 ...
- Flask实现简单的群聊和单聊
Flask是使用python写的一个简单轻量级的框架,今天我们使用Flask实现一个简单的单聊和群聊功能 . 主要思路 : 前端登录聊天室,聊天室信息包含用户的登录信息,相当于一个登录功能,会把这个信 ...
- flask 完成简单查询请求处理,及跨域
文章大纲 flask通用项目结构 flask 简介 主体代码逻辑 flask 跨域问题的处理 flask 日志 flask 微服务Flask-RESTful 启动服务命令 flask通用项目结构 | ...
- 使用Flask开发简单接口(1)--GET请求接口
前言 很多想学习接口测试的同学,可能在最开始的时候,常常会因没有可以练习的项目而苦恼,毕竟网上可以练习的接口项目不多,有些可能太简单了,有些可能又太复杂了,或者是网上一些免费接口请求次数有限制,最终导 ...
- 使用Flask开发简单接口(2)--POST请求接口
今天我们继续学习如何使用Flask开发POST接口:用户注册接口和用户登录接口. request接收参数 当我们在页面发出一个POST请求,请求传到服务器时,需要如何拿到当前请求的数据呢?在Flask ...
- 使用Flask开发简单接口(3)--引入MySQL
前言 前面的两篇文章中,我们已经学习了通过Flask开发GET和POST请求接口,但一直没有实现操作数据库,那么我们今天的目的,就是学习如何将MySQL数据库运用到当前的接口项目中. 本人环境:Pyt ...
- 利用flask 实现简单模版站
from flask import Flask,render_template from flask import request app = Flask(__name__) @app.route(' ...
- flask的简单使用
一.Flask中的CBV from flask import Flask, render_template from flask import views app = Flask(__name__, ...
随机推荐
- 搭建ss的步骤
1. 购买vultr产品 购买地址 (这个比较稳定) 2. 更改ssh的端口,混淆一下,我改成了2333 vim /etc/ssh/sshd_config 将里面的port改为2333 更改防火墙规则 ...
- mysql-xtrabackup
使用xtrabackup进行MySQL数据库备份 2013年10月04日 ⁄ MySQL ⁄ 共 11306字 ⁄ 使用xtrabackup进行MySQL数据库备份已关闭评论 ⁄ 被围观 34,116 ...
- 学会这些你就是Android 开发高手了!
世界范围内,很多移动设备都是Android系统,Android开发可以说很有前景.对于安卓开发者来说,如果有个地方可以找到Android开发所有的资料,不需要一个网站一个网站的搜索,简直是件很开心的事 ...
- js 的一些兼容性写法
①添加事件方法 addHandler:function(element,type,handler){ if(element.addEventListener){//检测是否为DOM2级方法 ...
- 理解 $nextTick 的作用
有同学在看 Vue 官方文档时,对 API 文档中的 Vue.nextTick 和 vm.$nextTick 的作用不太理解. 其实如果看一下深入响应式原理 - vue.js中的有关内容,可能会有所理 ...
- Linux 上下左右键变成^A,^B,^C,^D解决方法
用gedit打开 /etc/vim/vimrc.tiny,将里面的 set compatible 改成 set nocompatible 对于退格键backspace的问题,只需在刚才那句话下面加上一 ...
- VRChat简易教程4-使用VRC的接口实现物体的移动(VRC的action和trigger接口)
这个教程我们学习如何实现载具的驾驶 一.准备工作 1 最简单的载具驾驶需要至少两个元素,一是需要一个载具,二是需要一个前进的按钮(这里我们只做前进功能),为了直观的能感受到载具的移动,我们还得创造一个 ...
- v4l2 下载
To clone the master development repository, install git, and run: git clone git://github.com/torvald ...
- hadoop入门小知识点
注意各个主机之间的通信 文件的复制 scp指令 scp /etc/profile acm03:/etc 所有历史版本: archive.apache.org hdfs://acm01:9000 ...
- SMM+maven下的log4j配置打印sql
1加入依赖包 <!--LOG4日志 start --> <dependency> <groupId>org.slf4j</groupId> <ar ...