2017-01-05 8 views
3

Djangoでのインポートを正しく処理し、受け入れられる方法があるかどうかを知りたいですか?私は、次のパターンを使用Djangoのインポートを行う正しい方法は何ですか?

>は、私は多くのチュートリアルやブログで使用されて何を参照してください

# import views from Django app called xxx to urls.py in the same app 
from . import views 

>

# import views from Django app called xxx to urls.py in the same app 
from xxx import views 

は同様に私が使用>私が使用されて何を参照してください

# import YYY and XXX from xxx.models to xxx.serializers.py 
from .models import YYY, XXX 

例えばDjango-Rest-Frameworkのチュートリアルでは>

です
# import YYY and XXX from xxx.models to xxx.serializers.py 
from xxx.models import XXX, YYY 

私のDjangoアプリケーションでは、チュートリアルに示された方法でインポートを行うことはできません。私は何か間違っているのですか?私はDjangoのドキュメントから自分の道を選んだ。このコマンドを使用します。このアプリケーションを実行するために今すぐ2つのapp_1という名前のアプリとapp_2

mysite/ 
    manage.py 
    app_1/ 
     __init__.py 
     models.py 
     views.py 
    app_2/ 
     __init__.py 
     models.py 
     views.py 
    mysite/ 
     __init__.py 
     settings.py 
     urls.py 
     wsgi.py 

:私はPython3.5

+0

プロジェクトのツリー構造を共有してください。ツリーモジュールをインストールし、あなたのプロジェクトディレクトリから 'tree'コマンドを実行し、あなたの質問に出力を加えてください。 –

答えて

1

でDjangoの1.10を使用しています は、あなたがこのようになりますDjangoのプロジェクトを持っていると言います。

mysite> python manage.py runserver

ここでは、mysite親フォルダ/ディレクトリからコマンドを実行しています。

今、Python app_1でコードを表示しています。app_2モデルをインポートしています(コードが整理されていれば、これを行う必要はありません)。しかし、そのインポートを行うには、完全な名前空間を実行する必要があります。

例:あなたは

from .models import YYY

を使用している可能性がapp_1同じアプリの中からモデルをインポートしたかったが、あなたが実行している場合場合

一方from app_2.models import XXX

プログラムでmysite> python manage.py runserverコマンドを使用すると、完全な名前空間パスを持つ同じモジュールもインポートできるはずです。

from app_1.models import YYY

注:コードに良い方法は常に明示的です。したがって、あなたはこれらがより一般的に処方されていることに気づくだろ

# import views from Django app called xxx to urls.py in the same app 
from xxx import views 

# import YYY and XXX from xxx.models to xxx.serializers.py 
from xxx.models import XXX, YYY 
関連する問題