Flask 处理具有重复函数名的视图
在Flask中,是否有任何方法可以处理跨文件视图的重复函数名问题?我要说的是函数名,而不是为函数定义的路由。想象一下在Flask 处理具有重复函数名的视图,flask,Flask,在Flask中,是否有任何方法可以处理跨文件视图的重复函数名问题?我要说的是函数名,而不是为函数定义的路由。想象一下在file1.py中我得到了: @app.route('/some/unique/route') def duplicateFunctionName(): ...python code... @app.route('/another/unique/route/name') def duplicateFunctionName(): ...python code...
file1.py中我得到了:
@app.route('/some/unique/route')
def duplicateFunctionName():
...python code...
@app.route('/another/unique/route/name')
def duplicateFunctionName():
...python code...
然后在file2.py中,我得到:
@app.route('/some/unique/route')
def duplicateFunctionName():
...python code...
@app.route('/another/unique/route/name')
def duplicateFunctionName():
...python code...
然后在main.py
中导入以下视图函数:
import file1
import file2
<<code to run the flask server>>
导入文件1
导入文件2
<运行flask服务器的代码>
问题是在大型项目中,很难保持函数名的唯一性。在某些情况下,您肯定会有两个名为def saveData()
或其他什么的函数,调试这些问题非常困难。有解决这个问题的好办法吗?有两种方法可以解决这个问题
使用端点
关键字参数来路由
:
@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\u等进行寻址。但是,您需要确保所有端点名称都是唯一的,因此这并不完美
使用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\u one.duplicateFunctionName
和module\u two.duplicateFunctionName
除非您使用的是来自fileN import*
的,否则这两个函数将保留在各自的名称空间中,分别为file1.duplicateFunctionName
和file2.duplicateFunctionName
。