Flask学习笔记(一):基本框架和HTTP处理


前言

兄弟们,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写服务端是真的爽,后序会继续跟新这个系列.兄弟姐妹记得点赞关注哦!

  • 42
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值