Django - 包括应用程序网址

问题描述 投票:10回答:5

我有以下结构(Django 1.4):

containing_dir/
    myproject/
        myapp1/
        myapp2/
        myapp3/

myproject,myapp1,myapp2和myapp3都有init.py,所以它们都是模块。

在manage.py(在contains_dir下)我有os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

在myproject.settings我定义:

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

在myapp1.urls.py我定义:

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

我尝试在myproject.urls中导入它我尝试导入myapp1网址,如下所示:

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

但每当我尝试lo加载localhost:8000/myapp1/agent我得到

Exception Value: No module named myapp1

我认为从myapp1.urls中抛出

有帮助吗?谢谢

python django django-urls
5个回答
6
投票

你必须有一个

__init__.py

文件在“myproject”目录中。当你说:

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

你说“我的项目”(以及myapp1)是一个python包。


3
投票

在myproject.settings中进行以下更改:

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

0
投票

ROOT_URLCONF需要指向myproject.urls吗?

如果您将应用程序放在myproject中,则需要使用正确的view prefix

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

0
投票

尝试:

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

0
投票

要解决此问题,只需在PyCharm中选择“myproject”目录并将其设置为源根目录。您的项目不知道它必须从哪个根搜索给定的应用程序。它解决了我的问题。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.