Flask
Posted wqzn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask相关的知识,希望对你有一定的参考价值。
-
常用的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的主要内容,如果未能解决你的问题,请参考以下文章