文章

flask

flask

运行flask

1
python app.py

flask概念

  • 路由:路由是 URL 到 Python 函数的映射。Flask 允许你定义路由,这样当特定的 URL 被访问时,就会调用相应的函数。

  • 视图函数:视图函数是处理请求并返回响应的 Python 函数。它们通常接收请求对象作为参数,并返回响应对象。

  • 请求对象:请求对象包含了客户端发送的请求信息,如请求方法、URL、请求头、表单数据等。

  • 响应对象:响应对象包含了发送给客户端的响应信息,如状态码、响应头、响应体等。

  • 模板:Flask 使用 Jinja2 模板引擎来渲染 HTML 模板。模板允许你将 Python 代码嵌入到 HTML 中,从而动态生成网页。

  • 应用工厂:应用工厂是一个 Python 函数,它创建并返回一个 Flask 应用实例。这允许你配置和初始化你的应用,并且可以创建多个应用实例。 ```python from flask import Flask

def create_app(config_name): app = Flask(name) app.config.from_object(config_name)

1
2
3
4
5
6
7
from . import routes
app.register_blueprint(routes.bp)

return app ``` - 配置对象:Flask 应用有一个配置对象,你可以使用它来设置各种配置选项,如数据库连接字符串、调试模式等。 ```python class Config:
DEBUG = True
SECRET_KEY = 'mysecretkey'
SQLALCHEMY_DATABASE_URI = 'sqlite:///mydatabase.db' ``` - 蓝图:蓝图是 Flask 中的一个组织代码的方式,它允许你将相关的视图函数、模板和静态文件组织在一起,并且可以在多个应用中重用。 ```python from flask import Blueprint

bp = Blueprint(‘main’, name)

@bp.route(‘/’) def home(): return ‘Home Page’

1
2
3
4
5
6
7
8
9
注册蓝图
```python
from flask import Flask
from .routes import bp as main_bp

def create_app():
    app = Flask(__name__)
    app.register_blueprint(main_bp)
    return app
  • 静态文件:静态文件是不会被服务器端执行的文件,如 CSS、JavaScript 和图片文件。Flask 提供了一个简单的方法来服务这些文件。

  • 扩展:Flask 有许多扩展,可以添加额外的功能,如数据库集成、表单验证、用户认证等。

  • 会话:Flask 使用客户端会话来存储用户信息,这允许你在用户浏览你的应用时记住他们的状态。

  • 错误处理:Flask 允许你定义错误处理函数,当特定的错误发生时,这些函数会被调用。 ```python @app.errorhandler(404) def page_not_found(e): return ‘Page not found’, 404

@app.errorhandler(500) def internal_server_error(e): return ‘Internal server error’, 500

1
2
3
4
5
6
7
8
9
10
11
## flask路由
### 初始网址设置
``` python
app.run(host='',port = '')
#地址和端口号
app = Flask(__name__)
#这行代码创建了一个 Flask 应用实例。__name__ 是一个特殊的 Python 变量,它在模块被直接运行时是 '__main__',在被其他模块导入时是模块的名字。传递 __name__ 给 Flask 构造函数允许 Flask 应用找到和加载配置文件。
@app.route('/')
# 这是一个装饰器,用于告诉 Flask 哪个 URL 应该触发下面的函数。在这个例子中,它指定了根 URL(即网站的主页)。
app.run(debug=True)
#这行代码调用 Flask 应用实例的 run 方法,启动 Flask 内置的开发服务器。debug=True 参数会启动调试模式,这意味着应用会在代码改变时自动重新加载,并且在发生错误时提供一个调试器。

函数进行交互时,网址变化 一般来说,网址名等于函数名

1
2
3
@app.route("/xxx")
def index():
  pass

处理方法设置

1
2
3
@app.route("/xxx",methods=["POST","GET"])
def index():
  pass

传参

当我们在url里进行参数发送时候,想拿到url中的参数时

1
2
3
4
5
6
from flask import request
# http://127.0.0.1:5000/index?age=196&pwd=123
@app.route("/index")
def index():
  age = request.args.get('age')
  pwd = request.args.get('pwd')

若是请求体 {“xx”:123,”yy”=999}

1
2
3
4
5
from flask import request
@app.route("/index")
def index():
  xx = request.from.get("xx")
  yy = request.from.get("yy")

传递参数

传递json格式

1
2
3
4
from flask import jsonify
@app.route("/index")
def index():
  return jsonify(json)
本文由作者按照 CC BY 4.0 进行授权