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 и тестирование самого сигнала на другом тесте решило проблему.

Вернуться на верх