我正在开发一个新类,为我的django应用程序添加一些功能,并且需要扫描/收集每个从此类继承的类。我已经准备好了在我导入的特定模块中扫描它们的所有内容,但是我想知道在每个应用程序中扫描特定文件的最佳方式(只是我定义的那个文件) ?我知道其他一些应用程序可以做这样的事情,显然django本身就是这样做的。我可能会一起窃取一些东西来扫描文件系统,但我想知道是否有更好的/常用的方法来解决这个问题?我找不到太多。扫描Django应用程序模块
我总是可以在单个包中定义类,但由于它们与应用程序绑定,我认为最好在每个应用程序中定义它们,而不是从各处导入模型。
例如所需的接口:
def get_app_implementations(module_name):
# ... What's the least hacky way to get each of the app packages?
# in a way that they can be imported using __import__ or the likes
results = []
for package in packages:
try:
scanned = __import__("{0}.{1}".format(package,module_name))
results.append(scanned)
except ImportError:
pass
return results
这看起来很有希望,感觉更清洁。谢谢! – RutledgePaulV 2014-10-07 12:27:02
有没有办法让django在每个应用程序包中自动导入一个模块,以便我的插件可以注册而不必显式调用导入? ;) – RutledgePaulV 2014-10-07 13:27:55
听起来像1.7中新的[AppConfig功能](https://docs.djangoproject.com/en/1.7/ref/applications/)是你想要的。 – 2014-10-07 14:05:39