Ich versuche, eine andere magische Sache über Django zu verstehen: Es kann Strings in Module konvertieren.Wie konvertiert Django String in Module
In settings.py wird INSTALLED_APPS so erklärt:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
)
Alles, was es ist Strings enthält. Django konvertiert diese Zeichenfolgen in Module und importiert sie später.
Ich möchte in der Lage sein, das Gleiche zu tun. aber ich weiß nicht wie. Ich habe ein Wörterbuch der Renderer Dispatcher in settings.py:
RESOUCE_RENDERER = {
'video': 'video_player',
'audio': 'audio_player',
}
Ich möchte es so später verwenden: RESOURCE_RENDERER['video'](MyVideo)
.
Ich kann den Funktionsnamen (zB video_player) nicht direkt zuweisen, weil es in einem Modul lebt, das settings.py benötigt.
@Ninefingers, würde dies helfen, aber ich bin auf der Suche Funktionen zu importieren, nicht nur Module. Weißt du, wie ich das erreichen kann? – maroxe
ich denke, __import__ ist was ich suche – maroxe
Ja und nein. Die import-Anweisung ist ein Wraparound für die importlib-Funktionen. Wenn Sie also Spaß haben, importieren Sie * ein * * importiertes Variablenmodul * so, als hätten Sie nach "importjuniable" gefragt. Ich glaube nicht, dass Sie Variablennamen "importieren" können, aber Sie können über diese Bibliothek. Jetzt, nachdem Sie ein Modul importiert haben, haben Sie Zugriff auf alles darin - ich habe das obige Beispiel so erweitert, dass es den Code enthält, der auf 'INSTALLED_APPS' aus der Einstellungsdatei zugreift, wie Sie in q besprochen haben. –