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
。为什么这行不通?
答案 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")
仍然有效。