Python3 Flask框架学习笔记(一)

概要:Flask是一个web微框架。“微”也不代表 Flask 功能不强。 微框架中的“微”字表示 Flask 的目标是保持核心简单而又可扩展。

一、Flask安装

pip install flask

二、创建Flask工程

  • 首先我们导入了 Flask 类。
  • 创建该类的实例 app,第一个参数是应用模块或者包的名称。如果你使用 一个单一模块,那么应当使用 _name_ 。
  • 使用 route() 装饰器来绑定函数的 URL 。
    示例:
from flask import Flask
from flask import request

app = Flask(__name__)


@app.route('/study', methods=['GET'])
def hello_world():
    return 'Hello World!'


@app.route('/study/<username>', methods=['GET'])
def studyvariable(username):
    print(request.method)
    print(request.url)
    return 'Hello, {}'.format(username)

@app.route('/study/studypost', methods=['POST'])
def study_post():
    data = request.form
    print(type(data))
    print(data)
    print(data['username'])
    return 'ok'


if __name__ == '__main__':
    app.run()

三、相关方法,对象

(1)app.route(rule, options)

  • rule 参数表示与该函数的URL绑定。
  • options 是要转发给基础Rule对象的参数列表。
  • methods 接收的是一个列表:GET、POST etc.

(2)app.run(host, port, debug, options) (所有参数都是可选的)

  • host :要监听的主机名, 默认为127.0.0.1
  • port :设置端口号, 默认值为5000
  • debug :是否开启调试,默认为false。 如果设置为true,则提供调试信息
  • options :要转发到底层的Werkzeug服务器。

(3)request

  • 在 Flask 中由全局 对象 request 来提供请求信息,操作请求数据

(4)变量规则
通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量。标记的 部分会作为关键字参数传递给函数。通过使用<converter:variable_name> ,可以 选择性的加上一个转换器,为变量指定规则。例如示例中的变量 "<username>"

  • 转换器类型:
类型 描述
string (缺省值) 接受任何不包含斜杠的文本
int 接受正整数
float 接受正浮点数
path 类似 string ,但可以包含斜杠
uuid 接受 UUID 字符串

四、调试项目

  • 启动项目后控制台输出:
FLASK_APP = app.py
FLASK_ENV = development
FLASK_DEBUG = 0
In folder F:/Python项目/untitled
F:\Python项目\untitled\venv\Scripts\python.exe -m flask run
 * Serving Flask app "app.py"
 * Environment: development
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
  • 通过Postman调试

发送Get请求:http://127.0.0.1:5000/study/wangwu
响应:Hello, wangwu

控制台输出:

127.0.0.1 - - [25/Feb/2020 14:13:15] "GET /study/wangwu HTTP/1.1" 200 -
GET
http://127.0.0.1:5000/study/wangwu

发送Post请求:http://127.0.0.1:5000/study/studypost
表单数据:{‘username’:‘lisi’, ‘password’:‘123456’}
响应:ok

控制台输出:

<class 'werkzeug.datastructures.ImmutableMultiDict'>
ImmutableMultiDict([('username', 'lisi'), ('password', '123456')])
lisi
127.0.0.1 - - [25/Feb/2020 14:26:42] "POST /study/studypost HTTP/1.1" 200 -
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章