? Estoy tratando de comprender otra cosa mágica sobre django: puede convertir cadenas en módulos.¿Cómo convierte django la cadena a los módulos
En settings.py, INSTALLED_APPS se declara así:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
)
todo lo que contiene es cuerdas. Pero django convertirá esas cadenas en módulos y los importará más tarde.
Quiero hacer lo mismo. pero no sé cómo. tengo un diccionario de despachador de render en settings.py:
RESOUCE_RENDERER = {
'video': 'video_player',
'audio': 'audio_player',
}
quiero usarlo más tarde como esto: RESOURCE_RENDERER['video'](MyVideo)
.
No puedo asignar directamente el nombre de la función (por ejemplo, video_player) porque vive en un módulo que necesita settings.py.
@Ninefingers, esto ayudaría, pero estoy en busca de importar funciones, no sólo los módulos. ¿Sabes cómo puedo lograr eso? – maroxe
Supongo que __import__ es lo que estoy buscando – maroxe
Sí y no. La instrucción de importación es un envolvente para las funciones de importación, por lo tanto, cuando se divierte import_module, * ha * importado un módulo variable * como si * hubiera pedido "importar alguna variable". No creo que puedas 'importar' nombres de variables pero puedes hacerlo a través de esta biblioteca. Ahora, una vez que haya importado un módulo, tendrá acceso a todo lo que contiene: amplié el ejemplo anterior para incluir el código que tiene acceso a 'INSTALLED_APPS' desde el archivo de configuración, como lo mencionó en la sección q. –