Каков рекомендуемый способ получения универсального класса представления из имени URL-адреса?
url(r'^$', HomeView.as_view(), name='home')
Итак, с помощью «home» я хочу получить класс HomeView.
Класс get_class, полученный из следующего вопроса: Имеет ли python эквивалент 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 ) )
Это то, что я придумал сам, я очень открыт для других ответов.
Вдохновленный ответом Пикельса:
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.
view_initkwargs
view_class
Комбинируя это с ответом Соленья:
url = reverse('home') view = resolve(url).func.view_class