Sto cercando di capire un'altra cosa magica di django: può convertire stringhe in moduli.In che modo django converte string in moduli
In settings.py, INSTALLED_APPS viene dichiarata così:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
)
tutto ciò che contiene è stringhe. Ma django convertirà quelle stringhe in moduli e li importerà in seguito.
Voglio essere in grado di fare la stessa cosa. ma non so come. Ho un dizionario di rendering dispatcher in settings.py:
RESOUCE_RENDERER = {
'video': 'video_player',
'audio': 'audio_player',
}
voglio usare in un secondo momento come questo: RESOURCE_RENDERER['video'](MyVideo)
.
Non riesco ad assegnare direttamente il nome della funzione (ad esempio video_player) perché risiede in un modulo che richiede settings.py.
@Ninefingers, questo aiuterebbe, ma cerco di importare funzioni, non solo i moduli. Sai come posso riuscirci? – maroxe
Immagino che __import__ sia quello che sto cercando – maroxe
Sì e no. L'istruzione import è un wrapper per le funzioni importlib, in quanto tale, quando ti diverti import_module hai * importato * un modulo variabile * come se * avessi chiesto "import somevariable". Non penso che tu possa importare i nomi delle variabili, ma puoi farlo tramite questa libreria. Ora, una volta che hai importato un modulo hai accesso a tutto ciò che contiene, ho ampliato l'esempio sopra per includere il codice che accede a "INSTALLED_APPS" dal file delle impostazioni, come discusso nel q. –