On 9 sep, 03:46, maroxe <bachir...@gmail.com> wrote: > Hi, I am trying to understand an other magic thing about django: it > can convert strings to modules. In settings.py, INSTALLED_APPS is > declared like that: > > INSTALLED_APPS = ( > 'django.contrib.auth', > 'django.contrib.contenttypes', > 'django.contrib.sessions', > ) > All it contains is strings. But django will convert those strings to > modules and import them later. > > I want to do be able to do the same thing. but i don't know how.
One of the nice features of OSS is that you can read the source code, so no need to reinvent the wheel !-) Here's a snippet from one of our apps that should get you started: # -*- coding:utf-8 -*- from django.core.exceptions import ImproperlyConfigured from django.utils.importlib import import_module __backends = dict() def get_backend(classpath=None): """Loads an OAI Repository backend and return an instance of it. <classpath> is the python qualified path to the backend class, as a string, ie 'myapp.mymodule.ClassName' If not provided, the backend specified as OAI_BACKEND in the main settings file will be used. Note : already instanciated backends are served from a local cache """ from oai.repository import settings classpath = classpath or settings.BACKEND try: backend = __backends[classpath] except KeyError: try: mod_name, cls_name = classpath.rsplit('.', 1) mod = import_module(mod_name) except ImportError, e: raise ImproperlyConfigured( 'Error importing OAI repository backend module %s: "%s"' % (mod_name, e) ) try: cls = getattr(mod, cls_name) except AttributeError: raise ImproperlyConfigured( 'Module "%s" does not define a "%s" class' % (mod_name, cls_name) ) # instanciate and stores the backend class backend = __backends[classpath] = cls() return backend # ------------------------------------------------------------------------------ __all__ = ("get_backend",) HTH -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.