我有以下结构(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中抛出
有帮助吗?谢谢
你必须有一个
__init__.py
文件在“myproject”目录中。当你说:
(r'^myapp1/', include('myproject.myapp1.urls'))
你说“我的项目”(以及myapp1)是一个python包。
在myproject.settings中进行以下更改:
INSTALLED_APPS = (
[..]
'myapp1',
'myapp2',
'myapp3',
)
ROOT_URLCONF
需要指向myproject.urls
吗?
如果您将应用程序放在myproject
中,则需要使用正确的view prefix。
urlpatterns = patterns('myproject.myapp1',
...
尝试:
urlpatterns = [
...
url(r'^app_name/', include('app_name.urls', namespace='project_name'))
...
]
要解决此问题,只需在PyCharm中选择“myproject”目录并将其设置为源根目录。您的项目不知道它必须从哪个根搜索给定的应用程序。它解决了我的问题。谢谢。