2017-04-04 20 views
0

に別のアプリからクラスをインポートします。以下はプロジェクトの構造です。私は私のプロジェクトのためのDjango 1.10を使用していますジャンゴ

project 
|-accounts 
| |-forms 
| | |-__init__.py 
| | |-user_forms.py 
|-otherapp 
| |-views.py 

私はuser_forms.pyファイルにUserFormクラスを定義しており、__init__.pyファイルに私はotherappUserFormを使用しようとしていますuser_forms
from .user_forms import *としてインポート。

from accounts.form import UserForm 
form = UserForm(request.POST) 

作品が、

import accounts.forms.UserForm 
form = UserForm(request.POST) 

または

form = accounts.form.UserForm(request.POST) 

が動作しない理由
私はちょうど興味がありましたか?どうして?それは、Python Explicit is better than implicitの禅を次のように

は、2つの第1のより良い第三の方法ではありません。

他に1つのアプリからクラスをインポートするための最良の方法は何ですか?

答えて

1

UserFormがクラス、モジュールではないですので、あなたはimport accounts.forms.UserFormを行うことはできません。ただし、次の操作を行うことができます。

import accounts.forms 
form = accounts.form.UserForm(request.POST) 

私はあなたの最初のアプローチを好みます。限りUserFormaccount.viewsから別のUserFormと衝突しないように、問題が発生することはありません。インポートはどこからインポートされたのかを示しています。したがって、明示的ではないことが暗黙的ではないと私は考えていません。

from accounts.form import UserForm 
form = UserForm(request.POST) 
0

とき、私たちではないclassfunctionの名前付きモジュールのimport何パイソン検索。 UserFormはあなたに従ったクラスなので、import accounts.forms.UserFormは機能しません。それはそれは難しい場所を確認することができます - accounts.formsインポートから* `落胆しているあなたは`のようhttps://docs.python.org/3/reference/import.htmlhttps://docs.python.org/3/reference/simple_stmts.html#import

+1

スターの輸入を行くことができ、より上のimport声明について

from accounts.forms import * form = UserForm(request.POST) 

:あなたはまた、でそれを行うことができます輸入は来ている。 – Alasdair

関連する問題