烧瓶视图引发“ AttributeError:'函数'对象没有属性”

时间:2019-01-12 14:25:02

标签: python flask

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 :(得分:3)

您的视图函数的名称与您先前导入的名称相同。由于视图功能是在导入文件后定义的,因此它就是名称所指向的位置。

为导入使用别名:

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")仍然有效。