Django получить класс из строковой переменной - PullRequest
0 голосов
/ 02 мая 2018

У меня есть переменная, инициализированная именем класса. Но когда я использую эту переменную для доступа к представлению на основе классов, он показывает, что у объекта ошибки str нет атрибута as_view. Как получить класс из строковой переменной ..?

classname = "GetAjaxView"
return classname.as_view()(request)

1 Ответ

0 голосов
/ 02 мая 2018

Как насчет

eval(classname).as_view()(request) * * 1004

Я предполагаю, что вы не знаете, какой класс вы хотите использовать заранее, потому что в противном случае вы могли бы написать GetAjaxView.as_view()(request).

Если вы генерируете строку из пользовательского ввода, не используйте eval ; Вместо этого разработайте решение, которое будет отвечать только ожидаемым данным, возможно, что-то вроде:

if classname == "GetAjaxView":
  return GetAjaxView.as_view()(request)
elif classname in ["GetHectorView", "GetUlyssesView"]:
  return eval(classname).as_view()(request)
else:
  return defaults.server_error(request, template_name='500.html')
...