Как импортировать чертежи с тем же именем, что и файл, в котором они находятся? - PullRequest
0 голосов
/ 24 марта 2019

Фон

Я пытаюсь настроить чертеж, имя которого совпадает с именем файла, в котором он находится, так что, когда я ссылаюсь на него в моем app.py, я знаю, откуда берется план. Это должно быть возможно, потому что в примере exploreflask используется тот же шаблон. Тем не менее, я не могу понять, как заставить это работать с моей структурой.

Структура файла

├── app.py
├── frontend
    ├── __init__.py
    └── views
        ├── home.py
        └── __init__.py

Пример

интерфейс / вид / home.py

from flask import Blueprint, render_template

home = Blueprint('home', __name__)
home1 = Blueprint('home1', __name__)

интерфейс / вид / __ __ INIT. Ру

from .home import home
from .home import home1

app.py

from flask import Flask

from frontend.views import home
from frontend.views import home1

print (type(home))  --> <class 'function'> 
print (type(home1)) --> <class 'flask.blueprints.Blueprint'>

Поскольку home1 правильно регистрируется как Blueprint, но home я не подозреваю, что есть столкновение имен, но я не знаю, как решить его, несмотря на изучение это отличная статья об импорте соглашений.

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

app.register_blueprint(home1, url_prefix='/home1') --> Fine

но это не так:

app.register_blueprint(home, url_prefix='/home')
--> AttributeError: 'function' object has no attribute 'name'

Почему бы просто не заняться использованием home1?

  1. Я хочу понять, как можно разрешить столкновение
  2. Я хочу иметь возможность использовать имена маршрутов, совпадающие с именами файлов, в которых они находятся, например:

интерфейс / вид / home.py

from flask import Blueprint, render_template

home = Blueprint('home', __name__)

@home.route('/')
def home():
  pass

1 Ответ

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

Попробуйте использовать заглавные буквы в модуле Blueprint.

также вы можете использовать url_prefix в модуле.

Home = Blueprint("Home", __name__, url_prefix="/home")

@Home.route("/")
def home():
    pass
...