1、Flask轻量级的后端框架。
1)flask路由;(匹配URL)
2)request对象;abort函数;
3)模板:前端中要用的一些东西;
4)flask数据库;flask使用的一个插件去操作数据库,为了使用数据库中的一些数据;
5)学习到表单;账号注册,把数据提交到后端,post请求。表单的提交。后端代码,验证代码是正确的还是错误的,返回相关信息。
6)ajax的一些知识点。
7)管理系统小案例。
2、官方文档:
https://dormousehole.readthedocs.io/en/latest/
3、安装:
pip install flask -i https://pypi.douban.com
4、一个最小的应用:
from flask import Flask# Flask()
app = Flask(__name__) # 当前文件@app.route('/')
def index():return 'Hello world
'app.run()
5)路由:
web浏览器请求到web服务器,返回信息到浏览器。
Flask的引用实例需要知道URL,URL需要运行哪些代码,就把URL和Python路由映射起来。处理这两者的关系就是路由。
from flask import Flask# Flask()
app = Flask(__name__) # 当前文件@app.route('/hello') # 装饰器
def hello():return 'Hello world
'@app.route('/hi')
def hi():return 'hi hi'if __name__ == '__main__':app.run()
代码说明:
1)代码中有两个路由。
6)method方法:
from flask import Flask# Flask()
app = Flask(__name__) # 当前文件@app.route('/hello', methods=['GET', 'POST']) # 装饰器
def hello():return 'Hello world
'@app.route('/hi', methods=['POST'])
def hi():return 'hi hi'if __name__ == '__main__':app.run()
代码说明:
1)访问/hello的页面,正常访问;
2)但是访问/hi页面的时候,页面上提示:Method Not Allowed The method is not allowed for the request URL.
3)如果路由同名,只会匹配同名的第一个。但是代码中的函数是不能重名的。
View function mapping is overwriting an exsting endpoint function.
endpoint: 端点。
4)不要命名冲突。
from flask import Flask# Flask()
app = Flask(__name__) # 当前文件@app.route('/hello', methods=['GET', 'POST'], endpoint='hello') # 装饰器
def hello():return 'Hello world
'@app.route('/hi', methods=['GET', 'POST'], endpoint='hi')
def hello():return 'hi hi'if __name__ == '__main__':app.run()
7、变量规则:
from flask import Flask# Flask()
app = Flask(__name__) # 当前文件# @app.route('/hello', methods=['GET', 'POST'], endpoint='hello') # 装饰器
# def hello():
# return 'Hello world
'
#
#
# @app.route('/hi', methods=['GET', 'POST'], endpoint='hi')
# def hello():
# return 'hi hi'@app.route('/user/')
def index(id):if id == '1':return 'python'if id == str(2):return 'django'if int(id) == 3:return 'flask'return 'hello world'if __name__ == '__main__':app.run()
代码说明:
1)在浏览器地址栏中输入url是字符串,然后在代码中跟数字123进行匹配的时候要注意变量转换。
2)
8)变量规则转换器:
from flask import Flask# Flask()
app = Flask(__name__) # 当前文件@app.route('/user/')
def index(id):if id == 1:return 'python'if id == 2:return 'django'if id == 3:return 'flask'return 'hello world'if __name__ == '__main__':app.run()
代码说明:
1)int: 就是转换器
2)转换器可以是string(接收任何不包含斜杠的文本)、float(接收正浮点数)、path(可以接收包含斜杠的文本)、int(接收正整数)
from flask import Flask# Flask()
app = Flask(__name__) # 当前文件@app.route('/user/')
def index(id):if id == '1':return 'python'if id == '2':return 'django'if id == '3':return 'flask'return 'hello world'if __name__ == '__main__':app.run()
浮点数的
from flask import Flask# Flask()
app = Flask(__name__) # 当前文件@app.route('/user/')
def index(id):if id == 1.1:return 'python'if id == 2.2:return 'django'if id == 3.3:return 'flask'return 'hello world'if __name__ == '__main__':app.run()
自定义转换器:
1)<> 提取参数;
2)自定义转换器:
from flask import Flask
from werkzeug.routing import BaseConverter# Flask()
app = Flask(__name__) # 实例化class RegexConverter(BaseConverter):'''自定义转换器类'''regex = '1\d{10}'def __init__(self, url_map):# 调用父类的方法super(RegexConverter, self).__init__(url_map)def to_python(self, value):# 父类方法,功能已经实现好了return value# 将自定义的转换器类添加到flask应用中
app.url_map.converters['phone'] = RegexConverter # 放到字典中@app.route('/convert/')
def convert(value):print(value)return "hello world!"if __name__ == '__main__':app.run()
然后在浏览器中进行测试: