#python-3.x #flask
#python-3.x #flask
Вопрос:
У меня есть 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'
Есть идеи, что я делаю не так?
Обновить:
The 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)
Комментарии:
1. Просто хотел убедиться, что у вас есть функция под ним, в конце концов,
@app
это функция декоратора.
Ответ №1:
В autocomplete.py
похоже, что вы импортируете app
из Flask
, а не из своего __init__.py
файла. Вместо этого попробуйте импортировать из __init__.py
.
Комментарии:
1. у меня в моем xyz было ‘from flask import *’, который загружает приложение из flask. измените приложение в инициализации на myapp, и оно должно работать
Ответ №2:
сначала импортируйте Flask, запустите ваше приложение
from flask import Flask
app = Flask(__name__)
Комментарии:
1. Как вы можете видеть, я импортирую Flask и запускаю приложение. По-прежнему не работает
2. ваш код в этой строке: из flask импортируйте Flask, render_template, перенаправление, url_for, запрос, сеанс, flash, приложение, Blueprint, jsonify вы импортируете приложение из flask, попробуйте импортировать его из формы инициализации , используйте это (из . импортировать приложение)
Ответ №3:
Извините, это немного затянуто, я не знаком с этим способом запуска приложения Flask, но, похоже, вы создаете свой собственный экземпляр класса Flask с именем MyApp и инициализируете его в переменной app.
Я не уверен на 100% и могу быть совершенно неправ, но я думаю, что ваша проблема заключается в __init__
из MyApp
Ответ №4:
Вы импортировали Flask в your.py ? Дважды проверьте и добавьте отсутствующий.
Комментарии:
1. Да, у меня есть следующая строка в autocomplete.py:
from flask import Flask, render_template, redirect, url_for, request, session, flash, app, Blueprint, jsonify
2. Это не ответ. Это может быть комментарий.