У меня есть 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)