2016-12-24 13 views
-1

名前が 'add_member_address'の2つの場所に機能があります。
ビューで定義されている最初の方法を以下に示します。2つのモジュールで同じ名前の2つのメソッドを区別する方法(1つのファイルで使用する場合)

@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 

フォルダ構造:service/__init__.pyファイル内

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 

は、すべてのサービスが

from .address_services import * 
from .tag_services import * 

以下のようにインポートされ、私は同じの二つの方法を区別することができますどのように
1.私を提案してください。同じファイルで使用されている場合、2つの異なるモジュールに分かれています。
2.ファイルの上にインポートするのではなく、フルパスでメソッドを使用する方法。

+1

簡単に: 'from module import *'は使用しないでください。 – TigerhawkT3

答えて

3

ただ1つの名前を変更するか、モジュールのみをインポートしてその機能を属性としてルックアップします。

あなたが右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) 
+0

私は 'から考えていません。 address_servicesを 'として動作させる。 'as 'はキーワードです。 – TigerhawkT3

+0

「as as」の代わりに「as as」や「as a s」のような小さなタイプミスがあります – furas

+0

良い点が修正されました –

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 

または類似のもの。

関連する問題