我想了解關於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 2010-09-09 01:52:36
我猜__import__是我正在尋找 – maroxe 2010-09-09 01:55:12
是的,沒有。 import語句是importlib函數的一個包裝,因此,當您有趣的import_module時,您*已*導入了一個變量模塊*,就好像*您要求「import somevariable」一樣。我不認爲你可以'輸入'變量名,但你可以通過這個庫。現在,一旦你導入了一個模塊,你就可以訪問它的所有內容 - 我擴展了上面的例子,以包含從設置文件訪問'INSTALLED_APPS'的代碼,就像你在q中討論的那樣。 – 2010-09-09 01:59:01