Import urls in urls.py based on INSTALLED_APPS Django

django, python

Solution

I think this is the good way (which you have already mentioned):

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

Problem

I have`social_networks` app which is controlled from `settings.py` i.e whether to import it in main application or not. The way I achieved is: ``` `from social_networks import fb_settings` `fb_settings.modify(globals())` ``` If I want to stop the support of app and it's functionality I have to manually comment out the code during which `modify` will not be called. In my `fb_settings.py` which is a part of `social_networks` app, I update the `INSTALLED_APPS` to reflect the new app in `modify` function . I have main `urls.py` I have `include('social_networks.urls')` but I want to make it more modular to not include if the app is not installed. Currently I am checking the `settings.INSTALLED_APPS` variable to check if the app is present and based on that `include('social_networks.urls')`. Is this the proper way to do things in `django` or I am missing something already available form django that can help me?

Original source