Функция import_string

Функция import_string из модуля django.utils.module_loading позволяет импортировать объекты (классы, функции, переменные) по их строковому пути. Это удобно, когда нужно динамически загружать объекты на основе конфигурации или пользовательского ввода. Функция принимает строку с полным путем к объекту и возвращает сам объект, готовый к использованию.

Синтаксис

pythonfrom django.utils.module_loading import import_string

obj = import_string('path.to.module.ClassName')

Параметры функции:

Пример

Давайте импортируем модель Article и получим все записи из базы данных:

pythonfrom django.utils.module_loading import import_string

# Импортируем модель Article
Article = import_string('myapp.models.Article')

# Используем модель
res = Article.objects.all()
print(res)

Результат выполнения кода:

python[<Article: article 1>, <Article: article 2>, <Article: article 3>]

Функция импортирует указанный класс и возвращает его, после чего с ним можно работать как с обычным классом.

Пример

Рассмотрим импорт функции для динамического форматирования даты и времени:

pythonfrom django.utils.module_loading import import_string
from datetime import datetime

# Импортируем функцию для форматирования
format_func = import_string('django.utils.timezone.localtime')

# Используем импортированную функцию
now = datetime.now()
res = format_func(now)
print(res)

Результат выполнения кода:

python"2026-09-07 15:30:45+03:00"

Функция успешно импортировала метод localtime и применила его к объекту даты.

Пример

Импортируем класс из стандартной библиотеки Python:

pythonfrom django.utils.module_loading import import_string

# Импортируем класс datetime из стандартной библиотеки
datetime_class = import_string('datetime.datetime')

# Создаём объект datetime
res = datetime_class(2026, 9, 7, 12, 0, 0)
print(res)

Результат выполнения кода:

python"2026-09-07 12:00:00"

Функция может импортировать не только объекты Django, но и любые другие объекты из установленных пакетов.

Пример

Рассмотрим обработку ошибок при импорте:

pythonfrom django.utils.module_loading import import_string
from django.core.exceptions import ImproperlyConfigured

try:
  # Пытаемся импортировать несуществующий класс
  obj = import_string('myapp.models.NonExistentClass')
except ImproperlyConfigured as e:
  res = f"Error: {e}"
  print(res)

Результат выполнения кода:

python"Error: Module 'myapp.models' does not define a 'NonExistentClass' attribute/class"

При попытке импортировать несуществующий объект функция выбрасывает исключение ImproperlyConfigured, что позволяет обработать ошибку и предотвратить падение приложения.

Смотрите также

  • функция lazy,
    которая откладывает выполнение кода до момента использования
  • декоратор cached_property,
    который кеширует результат свойства
  • функция force_str,
    которая приводит значение к строке
  • функция mark_safe,
    которая помечает строку как безопасную для вывода