Django:从url名称获取通用视图类

时间:2011-04-21 19:50:50

标签: django

从网址名称获取通用视图类的推荐方法是什么?

url(r'^$', HomeView.as_view(), name='home')

因此,对于'home',我想获得HomeView类。

3 个答案:

答案 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_initkwargsview_class

将此与Pickles的回答结合起来:

url = reverse('home')
view = resolve(url).func.view_class