Flask

Posted wqzn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask相关的知识,希望对你有一定的参考价值。

  1. 常用的web框架 :

 1.Django:组件比较多,优点大而全,缺点是浪费资源

2.Flask

 - flask小而精,自由,灵活,可扩展性强,第三方库的选择面广,入门简单,非常适合小型网站,非常适合开发web服务的API,大型网站也无压力,但代码架构需要自己设计,各方面性能均优于或等于django,硬要说有什么缺点,那就是稳定性问题,使用了大量第三方库,flask如果更新,对于这些库可能会出现兼容问题

3.Tornado:异步IO非阻塞,原生websocket,缺点就是太干净。

4.Sanic HOT

下载Flask

pip install Flask

第一个Flask程序:

from flask import Flask #导入模块
app = Flask("__name__")  #实例化一个Flask对象
@app.route("/")   #装饰器
def index():   #视图
    reyurn "Hello,Word"

app.run(debug=True)   #启动
注意:debug=True,以后修改完代码不用重复启动

Flask之三剑客

render,redirect,HttpResponse

HttpResponse: return "Hello World" 返回字符串至客户端
render : return render_template("login.html")
与Django中的 render 使用一致 返回模板由浏览器渲染
redirect: return redirect("/login") # 302
跳转,重定向URL

Flask序列化:jsonify

from flask import jsonify
retrun jsonify({name:111}) # 返回json标准的字符串 
Content-Type:application/json

打开文件并返回文件内容(自动识别文件格式) send_file(path)

技术分享图片

request请求:

  • 请求方式

技术分享图片

表示:只有post和个体请求

 

  • request.method   请求方式
  • request.from   存放FormData中的数据 to_dict序列化成字典
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    用户名 : <input type="text" name="user">
    密码 : <input type="password" name="pwd">
    <input type="submit" value="提交">
</form>
</body>
</html>

HTML
print(request.form) # ImmutableMultiDict([(user, jam), (pwd, 123)])
# ImmutableMultiDict 就当作他是一个dict
print(request.form["user"]) # jam
print(request.form.get("pwd")) # 123

 

  •  request.args  获取存放在URL中的数据

技术分享图片

print(request.args) #  ImmutableMultiDict([(user, jam), (pwd, 123)]
print(request.args["user"])  # jam
print(request.args.get("pwd")) # 123

 

  •  request.url   获取完整的路径
  • request.path 获取路由地址
  • request.host 获取主机地址
  • request.values   获取 FormData and URL中的数据 不要用to_dict

to_dict() 方法可以直接将我们的参数全部转化为字典形式

print(request.values.to_dict())  # {‘user‘: ‘jam‘, ‘pwd‘: ‘123‘}
# 注意这里
# 如果url和form中的Key重名的话,form中的同名的key中value会被url中的value覆盖
  •  request.data  如果提交时请求头中的Content-Type 无法被识别 将请求体中的原始数据存放 byte
  • request.cookies  获取cookies中的数据,
  • request.headers  获取到请求头
  • request.files  上传文件
print(request.files)  # ImmutableMultiDict([(file, <FileStorage: jam.txt (text/plain)>)])
    print(request.files["file"])  # <FileStorage: jam.txt (text/plain)>
    my_file = request.files.get("my_file")
    my_file.save("jam.txt")  # 保存文件,里面可以写完整路径+文件名

 

 Jinja2渲染

{{}} 主要用来引用变量,执行函数
{%%}  逻辑代码放在这里
|safe Markup    安全标签字符串
@app.template_global()
@app.template_filter()

 

以上是关于Flask的主要内容,如果未能解决你的问题,请参考以下文章

12_关于flask中的宏

Flask之模板之宏继承包含

Flask模板宏的概念和基本使用

python flask(多对多表查询)

python后端 flask框架 计算时间差 并根据时间差条件返回flag值

python后端 flask框架 计算时间差 并根据时间差条件返回flag值