flask学习

 - 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>
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")  # 保存文件,里面可以写完整路径+文件名
原文地址:https://www.cnblogs.com/lzmdbk/p/10234677.html