从网址名称获取通用视图类的推荐方法是什么?
url(r'^$', HomeView.as_view(), name='home')
因此,对于'home',我想获得HomeView类。
答案 0 :(得分:8)
我从以下问题得到的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 ) )
这就是我自己想出来的,我对其他答案非常开放。
答案 1 :(得分:6)
灵感来自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__)
答案 2 :(得分:3)
Django 1.9为as_view()返回的函数引入了2个属性。 view_initkwargs
和view_class
。
将此与Pickles的回答结合起来:
url = reverse('home')
view = resolve(url).func.view_class