2013-04-08 10 views
6

が含ま私は、次の構造(ジャンゴ1.4)を持っている:Djangoは - アプリのURL

containing_dir/ 
    myproject/ 
     myapp1/ 
     myapp2/ 
     myapp3/ 

MyProjectと、myapp1、myapp2、およびmyapp3すべてがのinitの.pyを持っているので、彼らはすべてのモジュールです。

manage.pyでI iは定義myproject.settingsでos.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

を有する(containing_dir下):myapp1.urls.pyで

[..] 
ROOT_URLCONF = 'myproject.urls' 
INSTALLED_APPS = ( 
    [..] 
    'myproject.myapp1', 
    'myproject.myapp2', 
    'myproject.myapp3', 
) 
[..] 

私が定義:

urlpatterns = patterns('myapp1', 
    url(r'^agent/$', 'views.agent', name='agent') 
) 

と私はmyproject.urlsでインポートしようとしています。myapp1のURLを次のようにインポートしようとしています。

(r'^myapp1/', include('myproject.myapp1.urls')) 

が、私はLO負荷localhost:8000/myapp1/agentを試みるたび、私はmyapp1.urls

どれでも助けをwithingからスロー考える

Exception Value: No module named myapp1 

を取得しますか?ありがとう

答えて

0

ROOT_URLCONFmyproject.urlsを指す必要がありますか?

アプリをmyprojectの中に配置する場合は、適切なview prefixを使用する必要があります。

urlpatterns = patterns('myproject.myapp1', 
... 
+1

はい、私は再利用可能と取り外し可能なアプリケーションを作成したいので。 – pistacchio

+0

@pistacchioそれでは、あなたはほとんどの場合、それらがpythonパスに追加されるように、アプリケーションのインストールスクリプトを作成する必要があります。または手動で追加します。 – Ngenator

6

あなたはあなたの "でmyproject" ディレクトリ内

__init__.py 

ファイルを持っている必要があります。あなたが言うとき:

(r'^myapp1/', include('myproject.myapp1.urls')) 

あなたは "myproject"(と同様にmyapp1)はpython packegeと言っています。 myproject.settingsで

3

は、次のように変更します。

INSTALLED_APPS = ( 
[..] 
'myapp1', 
'myapp2', 
'myapp3', 
) 
0

試してみてください。

urlpatterns = [ 
    ... 
    url(r'^app_name/', include('app_name.urls', namespace='project_name')) 
    ... 
]