我尝试使用django的render_to_string
方法来生成html。这个函数实际上是在djangoRestFramework序列化程序的update
方法内部发送的信号中调用的。通过这样做,我得到了错误:
AttributeError: 'functools.partial' object has no attribute '__module__'
我试着调试,结果发现render_to_string
方法在序列化程序的update
块中不起作用。当我使用来自rest_frameworkUpdateAPIView
的泛型时,我没有设法在视图中放置断点。但是在调用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')
确保在settings.py
的template配置中正确配置了模板路径
好的,我明白为什么了。该错误不是由render_to_string方法引起的,而是由测试引起的。事实上,我在pytest过程中使用它时遇到了这个问题。导致此错误的功能是
django/test/utils.py:100: in instrumented_test_render
template_rendered.send(sender=self, template=self, context=context)
这是在测试期间调用的。在url测试中模拟这个函数,并在另一个测试中测试信号本身,解决了这个问题。