2013-03-27 29 views
2

我有social_networks应用程序,它是从settings.py控制即是否导入主应用程序或没有。导入网址,根据INSTALLED_APPS Django的

我实现的方式是:

`from social_networks import fb_settings` 

`fb_settings.modify(globals())` 

如果我想停止的应用程序的支持,它的功能我必须手动注释掉期间modify不会被调用的代码。

在我的fb_settings.py这是social_networks应用程序的一部分,我更新INSTALLED_APPS以反映modify函数中的新应用程序。

我有主urls.py我有include('social_networks.urls')但我想让它更模块化,以便不包括如果没有安装应用程序。目前,我检查settings.INSTALLED_APPS变量来检查应用程序的存在,并基于该include('social_networks.urls')

这是正确的方式做事django还是我失去了一些东西已经存在形式的Django,可以帮助我吗?

回答

3

我认为这是很好的方式(你已经提到过):

# 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')), 
    ) 
+0

我也想的一样.. THX – Anuj