本文主要内容是对 flask 框架官方文档的 quickstart (flask 如何使用)部分内容(项目中需要用到的知识点)进行简单总结。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
通过 IDE 运行,然后在浏览器上访问 localhost:5000
解释下上面的代码都做了什么
通过上面的 helloworld 程序已经了解到,Flask 框架是 通过 route() 将 URL 动态的跟函数绑定在一起,下面补充一个规则 - 将参数变量放在路径中。
# zhangsan 和 123 为参数,参数类型不受限制
# 正确示例
# 1. localhost:5000/user/zhangsan
# 2. localhost:5000/user/123
# 错误示例,报错: 404
# 1. localhost:5000/user
# 2. localhost:5000/user/
@app.route('/user/' )
def show_user(username):
print(username)
return 'User'
# 跟上面不同的地方是,这里限制了参数类型为 int
# 正确示例
# 1. localhost:5000/post/123
# 错误示例
# 1. localhost:5000/post/aaa
@app.route('/post/' )
def show_post(post_id):
print(post_id)
return 'Post'
# 不仅包含第一个示例的作用,还可以有如下用法:
# 访问: localhost:/path/subpath1/subpath2
# 打印结果 : subpath1/subpath2
@app.route('/path/' )
def show_subpath(subpath):
print(subpath)
return 'Subpath'
对比下面两个路径 /test1/ 和 /test2, 前者比后者末尾多了一个反斜杠。
@app.route('/test1/')
def test1():
return 'test1'
@app.route('/test2')
def test2():
return 'test2'
正常情况下:
访问 localhost:5000/test1/ 和 localhost:5000/test2 即可请求到资源。
但是,
当我们访问 localhost:5000/test1 时, 会重定向到 localhost:5000/test1/
当我们访问 localhost:/5000/test2/ 时,就会出现 404 not found。
访问 URL 时, web 应用会使用不同的 http 方法,比如 get ,post 等。默认只支持 GET 方法。
例如,当我们用 post 方法访问上面任意一个 url 时,会出现下面的 405 状态码。
405 Method Not Allowed
Method Not Allowed
The method is not allowed for the requested URL.
指定 method 方法
@app.route('/login', methods=['GET', 'POST'])
def login():
pass
有了 request 对象,我们就可以获取请求对象里面的参数,比如 form 表单提交的参数,url 后面的key - value参数,请求方法类型(get 或 post)等等。
from flask import request
@app.route('/login', methods=['POST', 'GET'])
def login():
# 获取表单参数
username = request.form['username']
password = request.form['password']
# TODO 省略部分业务逻辑
return 'login success'
# 例如: localhost:5000/search?key=value
@app.route('/search', methods=['POST', 'GET'])
def search():
# 获取 url 参数
searchword = request.args.get('key', '')
# TODO 省略部分业务逻辑
return 'search success'
def user_api():
return {
"username": '章三',
"age": '123',
}
fron flask import jsonify
def user_api():
data = [{'username': 'zhaSan', 'password': "123456"},
{'username': 'wangWu', 'password': "123456"}]
return jsonify(data)
本文可能还有如下诸多内容未涉及,会在后面的博客中补充进去。