我有social_networks
app,由settings.py
控制,即是否在主应用程序中导入。
我取得的成就是:
`from social_networks import fb_settings`
`fb_settings.modify(globals())`
如果我想停止支持app及其功能,我必须手动注释掉不会调用modify
的代码。
在fb_settings.py
应用中属于social_networks
的{{1}},我更新INSTALLED_APPS
以反映modify
功能中的新应用。
我有主urls.py
我有include('social_networks.urls')
但是我想让它更加模块化,如果没有安装应用程序则不包含。目前,我正在检查settings.INSTALLED_APPS
变量,以检查该应用是否存在且基于include('social_networks.urls')
。
这是在django
做事的正确方法,还是我遗漏了django已经提供的可以帮助我的东西?
答案 0 :(得分:4)
我认为这是一种好方法(你已经提到过):
# define necessary urls of your app which should always be present
urlpatterns = patterns('',
url(r'^$', 'myapp.views.home', name='home'),
)
# then add urls of external apps if the app is present in INSTALLED_APPS
if 'social_networks' in settings.INSTALLED_APPS:
urlpatterns += patterns('',
url(r'^social/', include('social_networks.urls')),
)