2012-07-27 88 views
0

在Django中我试图将一个应用程序(所以只能应用在INSTALLED_APPS)分成若干子目录,结构如下:Django的应用程序和子目录

app 
    views.py 
app\subdir1 
    views.py 
app\subdir2 
    views.py 

文件app \ views.py仅由

from subdir1.views import * 

所以我将app.subdir1.views的命名空间折叠到app.views中。然而,这不是期望的解决方案,我宁愿用

import subdir1.views 

,而不是崩溃的命名空间,但是这个结构使得Django的与错误抱怨“无法导入app.views.subdir1.json。父模块app.views。 subdir1不存在。“ 这当然是正确的,因为该父模块不存在。

所以我想提出的问题是:这个目录结构可能与否?

回答

0

应该可以的,你可以用app.subdir1.views.foo中的urls.py然后完全避免导入app/views.py

也许__init__.py这些目录之一中缺少文件?

+0

我试过了,是的,该视图可以工作,但是尝试使用syncdb失败,因为app \ subdir1没有被视为应用程序。在installed_apps中添加app \ subdir1修复了这个问题......但这是我想避免的部分。 – Paul 2012-07-27 10:10:28

+0

如果你只是在你的子目录中提供视图,你就不会有这个问题。如果你有模型,那么除了将它添加到INSTALLED_APPS之外没有别的办法。 – 2012-07-27 10:19:16

+0

你已经死了Torsten,我发现它不起作用,但我无法解释它为什么不起作用。因为在应用程序中,我放置了一个models.py woth行,如:from subdir1.models import * ,据我所知,这会将该subdir1的作用域“解散”到应用程序范围中。所以可能有些人会为我学习;-) – Paul 2012-07-27 18:06:46