Представление Flask вызывает "AttributeError: у объекта 'function' нет атрибута" - PullRequest
0 голосов
/ 12 января 2019

app.py определяет представление sectors, в котором используется класс Sectors, определенный в sectors.py. Когда я получаю доступ к представлению, я получаю AttributeError:

    sector = sectors.Sectors()
AttributeError: 'function' object has no attribute 'Sectors'
import sectors

@app.route("/sectors")
def sectors():
    sector = sectors.Sectors()
    return render_template('sectors.html', sector=sector)  

Я импортировал sectors, так что это должен быть модуль, а не функция, и для него определено Sectors. Почему это не работает?

1 Ответ

0 голосов
/ 12 января 2019

Ваша функция просмотра имеет то же имя, что и имя, которое вы импортировали ранее. Поскольку функция просмотра определяется после импорта в файл, это то, на что указывает имя.

Либо псевдоним импорта:

import sectors as sectors_mod

@app.route("/sectors")
def sectors():
    sectors_mod.Sectors()
    ...

Или измените название функции. Вы можете сохранить имя конечной точки как "sectors" для использования с url_for.

import sectors

@app.route("/sectors", endpoint="sectors")
def sectors_view():
    sectors.Sectors()
    ...

В любом случае имена импорта и функции различны, а имя конечной точки остается "sectors" в обоих случаях, поэтому url_for("sectors") все еще работает.

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