Flask 视图引发“AttributeError:‘function’对象没有属性”

Ano*_* Li 3 python flask

app.py定义一个sectors视图,该视图使用 中Sectors定义的类sectors.py。当我访问视图时,我得到一个AttributeError

    sector = sectors.Sectors()
AttributeError: 'function' object has no attribute 'Sectors'
Run Code Online (Sandbox Code Playgroud)
import sectors

@app.route("/sectors")
def sectors():
    sector = sectors.Sectors()
    return render_template('sectors.html', sector=sector)  
Run Code Online (Sandbox Code Playgroud)

我导入了sectors,所以它应该是一个模块,而不是一个函数,它确实已经Sectors定义了。为什么这不起作用?

dav*_*ism 6

您的视图函数与您之前导入的名称具有相同的名称。由于视图函数是在文件中导入后定义的,所以它就是名称所指向的。

或者别名导入:

import sectors as sectors_mod

@app.route("/sectors")
def sectors():
    sectors_mod.Sectors()
    ...
Run Code Online (Sandbox Code Playgroud)

或者更改函数的名称。您仍然可以保留端点名称以"sectors"用于url_for.

import sectors

@app.route("/sectors", endpoint="sectors")
def sectors_view():
    sectors.Sectors()
    ...
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下,导入和函数的名称是不同的,并且端点名称"sectors"在两种情况下都保留,因此url_for("sectors")仍然有效。