Python 第一个Flask项目

目录结构

- MyFirstFlaskProject
    - APP
        - Configure_files
            configure.py
        - Public_functions
            DBHelper.py
        - Route
            - Sub_route
                login_page_route.py
            main_route.py
        - Services
            LoginPage.py
        - Test
            test.py
        app.py
    run.py

configure.py

# flask 配置信息
HOST = '0.0.0.0'
PORT = 9999

app.py

from flask import Flask         # 引入Flask类, Flask类实现了一个应用
from flask_cors import CORS     # 引入CORS, 解决跨域问题

# 实例化 flask 对象, 创建 Flask 的 主app
# app_flask 是 Flask 的实例, 它接收包或者模块的名字作为参数, 但一般都是传递 __name__
# 让 flask.helpers.get_root_path 函数通过传入这个名字确定程序的根目录, 以便获得静态文件和模板文件的目录
app_flask = Flask(__name__)
CORS(app_flask, supports_credential=True)


if __name__ == '__main__':
    pass

main_route.py

from APP.app import app_flask  # 引入Flask框架构建的app_flask
from APP.Route.Sub_route.login_page_route import login_page

# 将蓝图注册到app, app是Flask的实例
# 将添加进来的蓝图继续地添加到所创建的主app中
# url_prefix : 指定蓝图的url前缀, 若注册蓝图和定义蓝图的url不一致, 以注册蓝图为准, 两个地方同时指定 url_prefix 时不是路由的拼接
app_flask.register_blueprint(login_page, url_prefix="/login")


# 使用 app_flask.route 装饰器会将 URL和执行的视图函数的关系 保存到 app.url_map 属性上
# 处理URL和视图函数的关系的程序就是路由, 这里的视图函数就是index
@app_flask.route("/")
def index():
    return "INDEX, 我是 main_route.py 的 @app_flask.route(\"/\")"

login_page_route.py

from flask import Blueprint, redirect, request
import json

login_page = Blueprint('login_page', __name__)


@login_page.route("/login/", methods=['POST', 'GET'])
def login():
    if request.method == 'POST':
        if request.is_json and request.get_json():
            request_json = request.get_json()
            print(request_json)
            return '后端login接口返回的数据'
        else:
            return '请求方式必须为POST'

    return '请求方式必须为POST'

run.py

# -*- encoding : utf8 -*-
# the main API of running the whole project

from APP.Configure_files.configure import HOST, PORT
from APP.Route.main_route import *


# 执行 app_flask.run 就可以启动项目
# 默认 Flask 只监听虚拟机的 本地127.0.0.1 这个地址, 端口为5000
# 而本项目对虚拟机做的端口转发端口是9998, 所以需要制定host和port参数, 0.0.0.0表示监听所有地址, 这样就可以在本机进行访问
# 服务器启动后, 会调用 werkzeug.serving.run_simple 进入轮询, 默认使用单进程单线程的 werkzeug.serving.BaseWSGIServer 处理请求
# 实际上还是使用标准库 BaseHTTPServer.HTTPServer, 通过 select.select 做0.5秒的 "while TRUE" 的事件轮询
# 当访问"http://127.0.0.1:9998/", 通过app.url_map找到注册的"/"这个模式
# 找到了对应的index()函数执行, 返回"INDEX, 我是 main_route.py 的 @app_flask.route('/')", 状态码为200
# 如果访问一个不存在的路径, 如访问"http://127.0.0.1:9998/a", 找不到对应的模式, 就会向浏览器返回"Not Found", 状态码为404
if __name__ == '__main__':
    # print('===+++===')
    app_flask.config["JSON_AS_ASCII"] = False
    app_flask.run(
        host=HOST,
        port=PORT,
        debug=True  # 开发环境debug一般是开启, 生产环境要关闭debug
        # 多线程
    )

猜你喜欢

转载自blog.csdn.net/auo13914972159/article/details/131391016