我有一个名字' add_member_address'在两个地方,但功能不同。
下面给出第一种方法,该方法在视图中定义。
APP-INF/lib
现在当流程到达内部@login_required(login_url='/accounts/login/')
def add_member_address(request, member_id):
if request.method == "GET":
pass
else:
data = request.POST
add_member_address(data, member_id) #<-this method is defined in another file.
时,它会尝试仅调用此外部方法。所以我试着给出这种内在方法的完整路径来区分。
add_member_address
其中租户是我的应用程序的名称,已在设置文件中注册。但是现在抛出了这个错误。
tenant.services.address_services.add_member_address(data, member_id)
文件夹结构:
name 'tenant' is not defined
在project
->tenant
->services
-> __init__.py
-> address_services.py
-> here is this add_member_address(data, member_id) method
-> other_services.py
->views
->members.py
->here is this add_member_address(request, member_id) method
文件中,所有服务都按以下方式导入
service/__init__.py
请建议我 1.如何在同一文件中使用时,如何区分两个相同名称但在两个不同模块中的方法 2.如何使用完整路径的方法而不是在文件顶部导入。
答案 0 :(得分:3)
只需重命名一个,或只导入模块并将该函数作为属性查找。
您可以在import
声明中重命名导入的名称:
from .address_services import add_member_address as add_address
# use add_address(data, member_id)
改为使用模块名称:
from . import address_services
# use address_services.add_member_address(data, member_id)
如果您发现后者过于冗长,请记住您也可以重命名模块参考:
from . import address_services as as_
# use as_.add_member_address(data, member_id)
答案 1 :(得分:0)
导入所有内容无论如何都不是一种好习惯。
from .address_services import add_member_address as add_member_address_address_services
from .tag_services import add_member_address as add_member_address_tag_services
或类似的东西。