根据INSTALLED_APPS Django在urls.py中导入网址

时间:2013-03-27 18:30:15

标签: python django

我有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已经提供的可以帮助我的东西?

1 个答案:

答案 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')),
    )