- 1 了解flask
- flask小而精,自由,灵活,可扩展性强,第三方库的选择面广,入门简单,非常适合小型网站,非常适合开发web服务的API,大型网站也无压力,但代码架构需要自己设计,各方面性能均优于或等于django,硬要说有什么缺点,那就是稳定性问题,使用了大量第三方库,flask如果更新,对于这些库可能会出现兼容问题
- 2 一段简单的flask代码
1 from flask import Flask # 导入代码 2 app = Flask(__name__) # 实例化Flask对象app 3 4 @app.route("/") # app中的route装饰器 5 def index(): # 视图函数 6 return "Hello World" 7 8 app.run() # 启动Flask
- 3 flask中的render,redirect,HttpResponse.
- 在flask中的HttpResponse在我们看来其实就是直接返回字符串
- 每当访问/re这个地址时,视图函数test1就会触发 , redirect("/")进行路由跳转到 "/" 并会触发test,像这样的跳转我们称之为重定向
- HTML模板渲染是每个web框架中都必须有的,render_template就是指定给页面返回html,flask会直接到templates文件夹下去找(注意文件名固定)
- 4 request请求
- 首先要知道
- 上面的意思就是这个url地址只允许post,get请求
- 1) request.methed 请求方式
@app.route("/home") def home(): print(request.method) # GET
- 2) request.form 通过formdata传递的值都在这里面
<!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>
print(request.form) # ImmutableMultiDict([('user', 'jam'), ('pwd', '123')]) # ImmutableMultiDict 就当作他是一个dict print(request.form["user"]) # jam print(request.form.get("pwd")) # 123
- 3) request.args 你能看见的url参数全在这里
print(request.args) # ImmutableMultiDict([('user', 'jam'), ('pwd', '123')] print(request.args["user"]) # jam print(request.args.get("pwd")) # 123
- request.args 与 request.form 的区别就是:
- request.args 是获取url中的参数
- request.form 是获取form表单中的参数
- 4) request.values 2,3中的参数都在这 方法一样就不说了,这里提供一个参数
- to_dict() 方法可以直接将我们的参数全部转化为字典形式
print(request.values.to_dict()) # {'user': 'jam', 'pwd': '123'}
# 注意这里 # 如果url和form中的Key重名的话,form中的同名的key中value会被url中的value覆盖
- 5) request.cookies 拿到浏览器的cookies信息
- 6) request.headers 获取请求头信息
- 7) request.url 访问的完整路径
- 8) request.path 路由地址
- 9) request.host 主机地址
- 10) request.json 如果提交时请求头中Content-Type 是 application/json 就会在这拿到
- 11) request.data 所有处理不了的就会变成字符串存在data里面
- http://www.w3school.com.cn/media/media_mimeref.asp
- 如果不属于上述类型的描述,requset就会将无法处理的参数转为json存入到data中
- 12) 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["file"] my_file.save("jam.txt") # 保存文件,里面可以写完整路径+文件名