Я пытаюсь понять другую волшебную вещь о django: она может преобразовывать строки в модули.Как django конвертировать строку в модули
В settings.py, INSTALLED_APPS объявляется так:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
)
Все это содержит в строки. Но django преобразует эти строки в модули и импортирует их позже.
Я хочу иметь возможность сделать то же самое. но я не знаю, как это сделать. У меня есть словарь визуализатор диспетчера в settings.py:
RESOUCE_RENDERER = {
'video': 'video_player',
'audio': 'audio_player',
}
Я хочу, чтобы использовать его в дальнейшем, как это: RESOURCE_RENDERER['video'](MyVideo)
.
Я не могу назначить непосредственно имя функции (например, video_player), потому что она живет в модуле, где требуется settings.py.
@Ninefingers, это помогло бы, но я ищу, чтобы импортировать функции, а не только модули. Вы знаете, как я могу это достичь? – maroxe
i guess __import__ - это то, что я ищу – maroxe
Да и нет. Оператор import является средством для функций importlib, поэтому, когда вы хотите импортировать переменную module *, вы * импортировали переменный модуль *, как если бы вы запросили «import somevariable». Я не думаю, что вы можете «импортировать» имена переменных, но вы можете через эту библиотеку. Теперь, как только вы импортируете модуль, у вас есть доступ ко всему, что есть в нем, я расширил приведенный выше пример, чтобы включить код, доступ к «INSTALLED_APPS» из файла настроек, как вы обсуждали в q. – 2010-09-09 01:59:01