AttributeError: модуль 'flask.app' не имеет атрибута 'route' - PullRequest
0 голосов
/ 12 марта 2019

У меня есть autocomplete функция в виде отдельного файла - autocomplete.py. Автозаполнение импортируется в init .py следующим образом:

from xyzapp.autocomplete import autocomplete

Строка, которая выдает ошибку в autocomplete.py, выглядит следующим образом:

@app.route('/autocomplete',methods=['GET'])

Структура приложения использует чертежи и выглядит следующим образом:

appcontainer
     |
     |--run.py
     |      
     |
     |--xyzapp
          |--__init__.py
          |--autocomplete.py
          |--blueprint_folder_1
          |--blueprint_folder_2
          |--static

Все сообщение об ошибке выглядит так:

 @app.route('/autocomplete',methods=['GET'])
 AttributeError: module 'flask.app' has no attribute 'route' 

Есть идеи, что я делаю не так?

UPDATE:

Файл autocomplete.py выглядит следующим образом:

from flask import Flask, render_template, redirect, url_for, request, session, flash, app, Blueprint, jsonify

@app.route('/autocomplete',methods=['GET'])
def autocomplete():
    database='backbone_test'
    db=client[database]
    all_names=list(db.ids.find({},{"current_name":1,"_id":0}))
    return json.dumps(all_names) 

Файл __init__.py выглядит следующим образом:

from flask import Flask, render_template, Blueprint, jsonify, session
import jinja2

class MyApp(Flask):
  def __init__(self):
    Flask.__init__(self, __name__)
    self.jinja_loader = jinja2.ChoiceLoader([self.jinja_loader,jinja2.PrefixLoader({}, delimiter = ".")])
    def create_global_jinja_loader(self):
        return self.jinja_loader

    def register_blueprint(self, bp):
        Flask.register_blueprint(self, bp)
        self.jinja_loader.loaders[1].mapping[bp.name] = bp.jinja_loader

app = MyApp()

from xyzapp.autocomplete import autocomplete
from xyzapp.blueprint_folder_1.some_file import bp_1

app.register_blueprint(bp_1)

Ответы [ 4 ]

1 голос
/ 14 марта 2019

В autocomplete.py похоже, что вы импортируете app из Flask, а не из файла __init__.py.Попробуйте вместо этого импортировать из __init__.py.

0 голосов
/ 12 марта 2019

Сначала импортируйте Flask, запустите ваше приложение

from flask import Flask
app = Flask(__name__)
0 голосов
/ 14 марта 2019

Извините, это немного, я не знаком с этим способом запуска приложения Flask, но кажется, что вы создаете свой собственный экземпляр класса Flask под названием MyApp и инициализируете его под переменной приложение.

Я не на 100% и могу ошибаться, но я думаю, что ваша проблема заключается в __init__ из MyApp

0 голосов
/ 12 марта 2019

Вы импортировали Flask в your.py? Перепроверьте и сделайте сложение недостающим.

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