Django: Get generic view class from url name

The get_class I got from the following question: 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 ) )

This is what I came up with myself I am very open to other answers.


Django 1.9 introduced 2 attributes to the functions that as_view() returns. view_initkwargs and view_class.

Combining this with Pickles' answer:

from django.urls import reverse, resolve

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

Inspired by Pickels' answer:

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__)

Tags:

Django