Django render_to_string не работает при обновлении сериализатора djangoRestFramework
Я пытаюсь использовать метод render_to_string
из django для генерации html. Эта функция фактически вызывается внутри сигнала, который посылается внутри метода update
сериализатора djangoRestFramework.
Сделав это, я получил ошибку:
AttributeError: 'functools.partial' object has no attribute '__module__'
Я попытался отладить и вот что я вижу: метод render_to_string
не работает внутри блока update
сериализатора.
Поскольку я использую дженерик из rest_framework UpdateAPIView
мне не удалось поставить точки останова внутри представления. Но до вызова url и представления render_to_string
работает нормально.
Я пытался найти ошибку в исходном коде django, но не смог найти, откуда она берется.
Вот часть кода, где я вызываю функцию render_to_string:
class AnalysisSerializer(serializers.ModelSerializer):
class Meta:
model = Object
fields = '__all__'
depth = 1
def update(self, instance, validated_data):
t = render_to_string('template/order.html')
Убедитесь, что вы правильно настроили путь к шаблону в конфигурации TEMPLATE в settings.py
Ок, я понял почему. Ошибка была вызвана не методом render_to_string, а тестами. На самом деле я столкнулся с этой проблемой, используя его внутри процесса pytest. Функция, вызывающая эту ошибку
django/test/utils.py:100: in instrumented_test_render
template_rendered.send(sender=self, template=self, context=context)
, которая вызывается во время тестирования. Подражание этой функции в тесте url и тестирование самого сигнала на другом тесте решило проблему.