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

文章目录

  • 前言
  • flask学习笔记
    • 1.基本框架
      • 1.1视图函数与路由
      • 1.2模板与静态文件
    • 2.HTTP与flask
      • 2.1Request对象
      • 2.2request获取url参数
        • 2.2.1args.get()方法
        • 2.2.2args.getlist()方法
      • 2.3处理请求
      • 2.4重定向
  • 总结


前言

兄弟们,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('/')
def hello(name):
    return f"Hello {name}!"

1.2模板与静态文件

  • template模板即包含程序页面的 HTML 文件
  • static静态文件则是需要在HTML文件中加载的 CSS 和JavaScript 文件,以及图片、字体文件等资源文件。
  • 模板文件存放在项目根目录中的templates 文件夹中,静态文件存放static 文件夹下,这两个文件夹需要和包含程序实例的模块处于同一个目录下
    Flask学习笔记(一):基本框架和HTTP处理_第1张图片

2.HTTP与flask

2.1Request对象

flask的request对象封装了从客户端发来的请求报文,我们可以通过她获取请求报文中的所有数据
Flask学习笔记(一):基本框架和HTTP处理_第2张图片

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/',methods=['GET','POST'])
def hello_world(name):
    return "

This book is %s!

"
%name @app.route('/booklist/',methods=['GET','POST']) def hello_world(id): return "

This book's id is %d!

"
%id #特殊的只能输入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给出的可选项,否则报错
  • 利用视图函数的返回值,视图函数可以返回最多由三个元素组成的元组: 响应主体、 状态码、首部字段。其中首部字段可以为字典
from flask import redirect
@app.route('/re1')
def f():
    return "",302,{'Location','/list'}#分别为相应主体,状态码,首部字段的部分内容

#特殊的只能输入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 "

Hi!Beauty!

"

总结

用flask写服务端是真的爽,后序会继续跟新这个系列.兄弟姐妹记得点赞关注哦!

你可能感兴趣的:(flask,学习,笔记,python,web)