快速使用flask
第一步首先下载Flask模块
第一个模块程序
#引用 Flask模块
from flask import Flask
# 创建flask对象
app = Flask(__name__)
#生成url 为index
@app.route('/index')
def index():
#页面返回hello world
return 'hello world'
#使用main函数
if __name__ == '__main__':
#使用app.run开启程序
app.run()
总结:
- flask框架是基于werkzeug的wsgi实现,flask自己没有wsgi。
- 用户请求一旦到来,就会之
app.__call__
方法 。 - 写flaks标准流程
- flask的session是保存在:加密的形式保存在浏览器的cookie上。
Flask设置___________
Flask路由请求
@app.route('/login',methods=['GET','POST'])
def login():
pass
#动态路由
@app.route('/login/<name>')
def login(name):
print(type(name))
return render_template('login.html')
#支持正则表达式的路由
from flask import Flask,render_template
app = Flask(__name__)
from werkzeug.routing import BaseConverter
class RegConverter(BaseConverter):
def __init__(self, map, regex):
super().__init__(map)
self.regex = regex
app.url_map.converters['regex'] = RegConverter
@app.route('/index/<regex("d+"):x1>')
def index(x1):
return render_template('index.html')
if __name__ == '__main__':
app.run()
视图
FBV视图路由的两种写法
def index():
return render_template('index.html')
app.add_url_rule('/index', 'index', index)
# 公司里一般用这种方式
@app.route('/login')
def login():
return render_template('login.html')
CBV视图的两种写法
from flask import Flask,render_template,views
app = Flask(__name__,)
def test1(func):
def inner(*args,**kwargs):
print('before1')
result = func(*args,**kwargs)
print('after1')
return result
return inner
def test2(func):
def inner(*args,**kwargs):
print('before2')
result = func(*args,**kwargs)
print('after2')
return result
return inner
class UserView(views.MethodView):
methods = ['GET',"POST"]
decorators = [test1,test2]
def get(self):
print('get')
return 'get'
def post(self):
print('post')
return 'post'
app.add_url_rule('/user', view_func=UserView.as_view('user')) # endpoint
if __name__ == '__main__':
app.run()
路由加载的源码流程
- 将url和函数打包成为 rule 对象
- 将rule对象添加到map对象中。
- app.url_map = map对象
路由的参数
@app.route('/login',methods=['GET','POST'],endpoint="login")
def login():
pass
# 注意:endpoint不能重名
获取提交的数据
from flask import request
@app.route('/index')
def login():
request.args # GET形式传递的参数
request.form # POST形式提交的参数
返回数据
@app.route('/index')
def login():
return render_template('模板文件')
return jsonify()
reutrn redirect('/index/') # reutrn redirect(url_for('idx'))
return "...."
wsgi 找源码的流程
from werkzeug.serving import run_simple
from werkzeug.wrappers import BaseResponse
def func(environ, start_response):
print('请求来了')
response = BaseResponse('Hello Word')
return response(environ, start_response)
if __name__ == '__main__':
run_simple('127.0.0.1', 5000, func)
wsgi静态文件的处理以及全局变量
from flask import Flask
app = Flask(__name__,template_folder="html_路径",static_folder="静态文件夹的名字",static_url_path="静态文件路径")
app.config.from_object('加载的配置文件_例子______config.settings')
@app.route('/index') def index():
return 'hello world'
if __name__ == '__main__':
app.run()