flask 是一个使用 Python 编写的轻量级 web 应用框架. 轻巧页就意味着他比较简洁, 不过见到的 MTV 框架还是有的,(MVC) 但是最重要的还是他的可扩展性很强, 对比与 Django 框架呢, 他的灵活度就很高了, 可以自己一些设计代码框架.
一, 实现一个最简单的 Web 服务器
- from flask import Flask, request, render_template
- import time
- # 通过 name 初始化 application
- App = Flask(__name__)
- # 添加路由 添加多个路由
- @App.route('/hello')
- @App.route('/')
- # 视图函数 control : view function MVC 设计模式 负责转发请求, 对请求进行处理
- def index():
- # 获取 url 中的参数, 如果有会获取到 如果没有设置值为 None
- args = request.args
- name = args.get("username")
- '''
- 1. 接受参数
- 2, 调用对应的函数去处理数据 (model)
- 3, 构建响应结果
- '''
- # 返回一个 html 页面
- return render_template('test_CSS.html')
- if __name__ == '__main__':
- # 启动一个服务器 wsgi
- App.run(debug=True)
在返回 HTML 时要注意把 HTML 文件存放在 templates 文件中, 使用到的静态文件存放在 static 文件中, 可以在初始化 application 时候修改
- def __init__(
- self,
- import_name,
- static_url_path=None,
- static_folder="static", # 静态文件存放
- static_host=None, # 开启服务器端口 默认 5000
- host_matching=False,
- subdomain_matching=False,
- template_folder="templates", # HTML 文件存放
- instance_path=None,
- instance_relative_config=False,
- root_path=None,
- ):
二, 路由注册: 集中注册
- from flask import Flask
- App = Flask(__name__)
- def index():
- return '1'
- def login():
- return '2'
- # 集中注册方法 view_func 指定视图函数
- App.add_url_rule('/index', view_func=index)
- App.add_url_rule('/login', view_func=login)
- if __name__ == '__main__':
- App.run()
三, 路由重定向
- from flask import Flask
- App = Flask(__name__)
- # flask 中 /login 和 /login/ 对待成两个不同的 url redirect_to 强制重定向到 /
- @App.route("/login", redirect_to="/")
- # 此时访问 / login/ 会 404
- def login():
- return 'login1'
- @App.route("/")
- def index():
- return 'index'
- @App.route("/login/")
- # 此时访问 / login 会返回成功 永久重定向 308 到 / cases/
- def login_1():
- return 'login2/'
- if __name__ == '__main__':
- App.run()
四, 获取动态参数
- from flask import Flask,request
- App = Flask(__name__)
- # 通过尖括号表示变化的内容 注意设置数据类型 @App.route("/cases/<int:id>")
- # string:id 不能包含斜杠 path:id 可以包含斜杠 def get_case(id): return f'{id}'
- # defaults 设置默认值 也可以通过视图函数设置
- @App.route("/case/<id>", defaults={"id": 3})
- def get_case_1(id=None):
- id = request.args.get("id")return id
- if __name__ == '__main__':
- App.run()
来源: https://www.cnblogs.com/congyiwei/p/12962041.html