首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Python Flask中的Blueprint不能工作,尽管看起来很简单?

为什么Python Flask中的Blueprint不能工作,尽管看起来很简单?
EN

Stack Overflow用户
提问于 2019-06-10 06:01:26
回答 1查看 478关注 0票数 -2

我在做一个项目。现在我决定用blueprint把它分成几个小部分。根据输出,我的变量modapi不是可访问的app.py。输出结果显示在帖子的最后。

代码语言:javascript
复制
C:.
│   app.py
│   appaux.py
│   db.yaml
│
├───.vscode
│       settings.json
│
├───blue
│   │   __init__.py
│   │
│   ├───api
│   │   │   forms.py
│   │   │   routes.py
│   │   │   utils.py
│   │   │   __init__.py

app.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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)

blue/routes.py

代码语言:javascript
复制
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'))回溯(最近一次调用):文件"app.py",第4行,在app = create_app()文件"C:\Users\joaog\Documents\tryflask\blue__init__.py",第19行,从blue.api.routes导入modapi文件"C:\Users\joaog\Documents\tryflask\blue\api\routes.py",第1行,从应用程序导入Flask,render_template,url_for,重定向,jsonify文件"C:\Users\joaog\Documents\tryflask\app.py",第4行,位于app = create_app()文件"C:\Users\joaog\Documents\tryflask\blue__init__.py",第19行,来自blue.api.routes导入modapi的create_app格式

modapi:无法从'blue.api.routes‘(C:\Users\joaog\Documents\tryflask\blue\api\routes.py)导入名称'modapi’

EN

回答 1

Stack Overflow用户

发布于 2019-06-10 08:15:25

我认为您在导入路由时是错误的。

请看一看

蓝色/初始化.py

代码语言:javascript
复制
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')

blue/api/routes.py

代码语言:javascript
复制
from flask import Blueprint

modapi = Blueprint('api', __name__)

@modapi.route('/')
def alunos():
    return 'Hello World alunos'

应该是工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56518690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档