Почему Blueprint в Python Flask не работает, хотя кажется, что это так просто? - PullRequest
0 голосов
/ 10 июня 2019

Я делаю проект.И прямо сейчас я решил разбить его на мелкие части, используя план.Согласно выводу, моя переменная 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

app.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)

blue / init .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)

blue / rout.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: вызов 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 из blue.api.routes импорт файла modapi Файл" C: \ Users \ joaog \ Documents \ tryflask \ blue \ api \ rout.py ", строка 1, из импорта приложения Flask, render_template, url_for, redirect, jsonify Файл "C: \ Users \ joaog \ Documents \ tryflask \ app.py", строка 4, в файле app = create_app () "C: \ Users \ joaog \ Documents \ tryflask \ blue__init__.py ", строка 19, в create_app из blue.api.routes импорт modapi

ImportError: невозможно импортировать имя 'modapi' из 'blue.api.routes' (C: \ Users \ joaog \ Documents \ tryflask \синий \ апи \ routes.py)

1 Ответ

0 голосов
/ 10 июня 2019

я думаю, что вы ошибаетесь при импорте маршрутов ...

пожалуйста, посмотрите

синий / init .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')

blue / api / rout.py

from flask import Blueprint

modapi = Blueprint('api', __name__)

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

все должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...