文章目录
前言
兄弟们,flak是真好用吧!本文是笔者学习flask时做的笔记的第一篇,记录了一些最基础且常用的入门级操作.
flask学习笔记
anaconda中下载flask包
- 激活环境:命令窗口输入"activate env-name"
- 进入环境后:输入"pip install flask"
1.基本框架
1.1视图函数与路由
- 视图函数
- 装饰器
- 路由:绑定url和视图函数
- app.run的参数
- host:指定ip地址,默认127.0.0.1,也可以设定为局域网中ip地址直接供局域网访问,还能直接设置为0.0.0.0让127.0.0.1和局域网都能访问
- port:端口号
网页输出"Hello Word!"
from flask import Flask, request
app = Flask(__name__)#创建flask实列
# 在这个程序里,app.route()装饰器把根地址/和hello_world函数绑定起来,当用户访问这个URL时就会触发对应的视图函数
#route:路由,路由负责管理url和函数的映射
@app.route('/')#装饰器,传入url参数
def hello_world():#视图函数,管理网页的显示内容
return "Hello World!"
if __name__ == '__main__':
app.run(host='0.0.0.0',port=5000, debug=True)
动手运行一下代码,尝试一下修改一些参数
- 绑定多个url
@app.route('/anyname')
@app.route('/files')
@app.route('/')
def hello_world():
return "Hello World!"
- 动态url,让url中包含变量加上<>,注意给视图函数加上形参接收数据
@app.route('/<name>')
def hello(name):
return f"Hello {name}!"
1.2模板与静态文件
- template模板即包含程序页面的 HTML 文件
- static静态文件则是需要在HTML文件中加载的 CSS 和JavaScript 文件,以及图片、字体文件等资源文件。
- 模板文件存放在项目根目录中的templates 文件夹中,静态文件存放static 文件夹下,这两个文件夹需要和包含程序实例的模块处于同一个目录下
2.HTTP与flask
2.1Request对象
flask的request对象封装了从客户端发来的请求报文,我们可以通过她获取请求报文中的所有数据
2.2request获取url参数
2.2.1args.get()方法
- args.get(键的名称)直接获取url中对应键的值
- 比如url为:http://127.0.0.1:5000/?user=%E5%B8%85%E5%93%A5&name=TheOne
- request.args.get(‘name’)返回的数据为TheOne
- 有时用户可能没有输入参数,可以设置默认值args.get(key_name,default_value)
@app.route('/')
def hello_world():
return request.args.get('name','handsomeboy')#第二个参数为默认值
2.2.2args.getlist()方法
当同一个键可能有多个值时,调用这个函数,若用get,只能获取第一个
2.3处理请求
url指向网络上的资源的地址,flask中绑定url与视图函数,视图函数的返回值就是url对应的资源
- 监听HTTP请求的方法,给app.route修饰器添加methods参数,若访问方式不是可允许的返回405报错
@app.route('/',methods=['GET','POST'])
def hello_world():
return request.args.get('name','handsomeboy')#第二个参数为默认值
- url处理:限定url中变量的类型,具体的数据类型可以自行查阅
@app.route('/booklist/<string:name>',methods=['GET','POST'])
def hello_world(name):
return "<h1>This book is %s!</h1>" %name
@app.route('/booklist/<int:id>',methods=['GET','POST'])
def hello_world(id):
return "<h1>This book's id is %d!</h1>" %id
#特殊的<any(...,...,...):变量名>只能输入any给出的可选项,否则报错
2.4重定向
- redirect函数,直接跳转对应的网址
- app下直接从根目录开始
- 其他网址需完整的url
from flask import redirect
@app.route('/re1')
def f():
return redirect('/list')#跳转到127.0.0.1:5000/list
@app.route('/re2')
def f():
return redirect('https://www.baidu.com')#跳转到百度
#特殊的<any(...,...,...):变量名>只能输入any给出的可选项,否则报错
- 利用视图函数的返回值,视图函数可以返回最多由三个元素组成的元组: 响应主体、 状态码、首部字段。其中首部字段可以为字典
from flask import redirect
@app.route('/re1')
def f():
return "",302,{'Location','/list'}#分别为相应主体,状态码,首部字段的部分内容
#特殊的<any(...,...,...):变量名>只能输入any给出的可选项,否则报错
响应在Flask 中使用 Response 对象表示,响应报文中的大部分内容由服务器处理,大多数情况下,我们只负责返回主体内容
- 根据视图函数跳转,url_for()函数根据视图函数生成url地址
from flask import redirect,url_for
@app.route('/re1')
def f():
return redirect(url_for('hello'))#hello是另一个视图函数的函数名
@app.route('/hello')
def hello():
return "<h1>Hi!Beauty!</h1>"
总结
用flask写服务端是真的爽,后序会继续跟新这个系列.兄弟姐妹记得点赞关注哦!