在Flask中,有没有办法处理文件中视图的重复函数名称问题?为了清楚起见,我说的是函数的名称,而不是为函数定义的路径。想象一下file1.py
我得到了:
@app.route('/some/unique/route')
def duplicateFunctionName():
...python code...
然后在file2.py
我得到了:
@app.route('/another/unique/route/name')
def duplicateFunctionName():
...python code...
然后在main.py
我导入这些视图函数:
import file1
import file2
<<code to run the flask server>>
问题在于,在大型项目中,保持函数名称的独特性非常困难。在某些时候,您必然会有两个名为def saveData()
的函数或其他函数,并且很难调试这些问题。这个问题有一个优雅的解决方案吗?
答案 0 :(得分:1)
有两种方法可以解决这个问题。
将endpoint
关键字参数用于.route
:
@app.route('/some/unique/route', endpoint="unique_name_1")
def duplicateFunctionName():
pass
@app.route('/another/unique/route', endpoint="unique_name_2")
def duplicateFunctionName():
pass
这将确保您的所有功能都可以通过url_for
等进行寻址。但是,您需要确保所有端点名称都是唯一的,因此它是&#39;不完美。
使用Blueprint
将路由拆分为较小的独立包:
bp1 = Blueprint("module_one", __name__)
@bp1.route("/some/unique/route")
def duplicateFunctionName():
pass
bp2 = Blueprint("module_two", __name__)
@bp2.route("/another/unique/route")
def duplicateFunctionName():
pass
这里的优点是端点名称以蓝图的名称为前缀,这意味着您现在有两个名称为duplicateFunctionName
的端点,而不是两个端点具有冲突的名称module_one.duplicateFunctionName
。和module_two.duplicateFunctionName
。