python - 为什么 Python Flask 中的蓝图无法正常工作,尽管看起来很简单?
问题描述
我在做一个项目。现在我决定用蓝图把它分成小部分。根据输出,我的变量 modapi 无法访问 app.py。输出显示在帖子的最后。
C:.
│ app.py
│ appaux.py
│ db.yaml
│
├───.vscode
│ settings.json
│
├───blue
│ │ __init__.py
│ │
│ ├───api
│ │ │ forms.py
│ │ │ routes.py
│ │ │ utils.py
│ │ │ __init__.py
应用程序.py
from blue import create_app,create_MySQL_connection
from flask import Flask, render_template, url_for, redirect, jsonify
app = create_app()
mysql = create_MySQL_connection(app)
if __name__ == '__main__':
app.run(debug=True)
蓝色/初始化.py
from flask import Flask
from flask_mysqldb import MySQL
import yaml
from flask_cors import CORS
def create_app():
app = Flask(__name__, instance_relative_config=True)
app.config.from_object(__name__)
db = yaml.load(open('db.yaml'))
app.config['MYSQL_HOST'] = db['mysql_host']
app.config['MYSQL_USER'] = db['mysql_user']
app.config['MYSQL_PASSWORD'] = db['mysql_password']
app.config['MYSQL_DB'] = db['mysql_db']
#mysql = MySQL(app)
CORS(app)
from blue.api.routes import modapi
# from blue.site.routes import mod
# app.register_blueprint(site.routes.mod)
app.register_blueprint(modapi, url_prefix='/api')
from blue.api import routes
app.register_blueprint(routes)
return app
def create_MySQL_connection(app):
return MySQL(app)
蓝色/routes.py
from app import Flask, render_template, url_for, redirect, jsonify
#from flask import Flask, render_template, url_for, redirect, jsonify
from Flask import Blueprint
#from blue import create_app
from flask_mysqldb import MySQL
from flask import request, Response
import json
import yaml
from flask_cors import CORS
from app import mysql
from blue.api.utils import extract_tables
from blue.api.forms import *
# IMPORTES NECESSARIOS PARA A COMPARACAO ATRAVES DE DATASET DOS COMANDOS DE SQL
import sqlparse
import MySQLdb._mysql
import pandas
import datacompy
from mysql.connector import Error
modapi = Blueprint('api', __name__)
@modapi.route('/v1.0/alunos/', methods=['POST', 'GET'])
def alunos():
...
C:\Users\joaog\Documents\tryflask\blue__init__.py:10: YAMLLoadWarning: 不推荐在没有 Loader=... 的情况下调用 yaml.load(),因为默认的 Loader 是不安全的。请阅读https://msg.pyyaml.org/load了解完整详情。db = yaml.load(open('db.yaml')) Traceback(最近一次调用最后):文件“app.py”,第 4 行,在 app = create_app() 文件“C:\Users\joaog\Documents\ tryflask\blue__init__.py",第 19 行,create_app from blue.api.routes import modapi File "C:\Users\joaog\Documents\tryflask\blue\api\routes.py",第 1 行,in from app import Flask , render_template, url_for, 重定向, jsonify 文件 "C:\Users\joaog\Documents\tryflask\app.py", 第 4 行, in app = create_app() 文件 "C:\Users\joaog\Documents\tryflask\blue__init__. py”,第 19 行,
ImportError:无法从“blue.api.routes”导入名称“modapi”(C:\Users\joaog\Documents\tryflask\blue\api\routes.py)
解决方案
我认为您在导入路线时错了...
请看一下
蓝色/初始化.py
from flask import Flask
app = Flask(__name__)
app.config['SECRET_KEY'] = 'qqwer%t&'
from blue.api.routes import modapi
app.register_blueprint(modapi, url_prefix='/api')
蓝色/api/routes.py
from flask import Blueprint
modapi = Blueprint('api', __name__)
@modapi.route('/')
def alunos():
return 'Hello World alunos'
这应该是工作
推荐阅读
- internationalization - 使用 i18n 语言代码识别语言和地区的最佳实践?
- excel - 如何执行由字符串组成的公式?间接不工作
- swift - 添加多个子视图的最佳方法 UIViewControllers
- android - NotificationListenerService 间歇性地为 Oreo 工作
- php - How to echo result of submit within same form in codeigniter
- qt - 找不到 XCB 插件
- bash - md5deep doesn't output in a consistent order
- python - Undestanding A While Loop With Conditionals
- codenameone - Export files to public FileSystem
- vba - Excel VBA - String replacement - reg exp?