從url名稱獲取通用視圖類的建議方式是什麼?Django:從url名稱獲取通用視圖類
url(r'^$', HomeView.as_view(), name='home')
因此,'家'我想要得到類HomeView。
從url名稱獲取通用視圖類的建議方式是什麼?Django:從url名稱獲取通用視圖類
url(r'^$', HomeView.as_view(), name='home')
因此,'家'我想要得到類HomeView。
我從以下問題得到的get_class:Does python have an equivalent to Java Class.forName()?
url = reverse('home')
resolver_match = resolve(url)
func = resolver_match.func
module = func.__module__
view_name = func.__name__
clss = get_class('{0}.{1}'.format(module, view_name))
這是我想出了自己,我到其他的答案很開放。
通過Pickels'答案的啓發:
import importlib
from django.core.urlresolvers import reverse, resolve
view_name = 'my_view_name'
view_func = resolve(reverse(view_name)).func
module = importlib.import_module(view_func.__module__)
view = getattr(module, view_func.__name__)
Django 1.9引入2個屬性到as_view()返回的功能。 view_initkwargs
和view_class
。
與泡菜結合這個答案:
url = reverse('home')
view = resolve(url).func.view_class
你可能想圓走另一條路:從視圖類的名稱,URL名稱。爲什麼?因爲類名是更高度結構化的世界。例如,在輸入錯誤後,如果有問題的行包含的名稱不能在那裏解決,則會得到更有意義的錯誤消息。 (對於基於類的視圖,你可以使用'.as_view()'幫助你使解析和表示更簡單。) – 2014-11-14 13:59:10