Pat*_*ick 8 python django tastypie django-rest-framework
我在Django中编写了一个机器学习应用程序,因此用户可以在表单中指定一些参数并训练模型.一旦模型被训练,我想要提供如下请求:
curl http://localhost:8000/.../?model_input='XYZ'
Run Code Online (Sandbox Code Playgroud)
我希望Django在给定输入XYZ的情况下返回模型的输出.我从Tastypie或REST框架中看到的每个示例都是从查询集构建其响应.如果响应不是查询集的结果而是内存中纯计算的结果,我该如何继续?在我的例子中,响应是由向量(输入)进行矩阵乘法(训练模型)的结果,并且该结果不存储在表中.
管理此类请求的推荐方法是什么?任何帮助是极大的赞赏.此致,帕特里克
Django REST Framework不需要模型源或查询集,但在使用它们时它确实表现最佳.它确实提供了一个基本Serializer的基础APIView类,以及允许在标准的基于Django类的视图之上使用内容协商的基本类.
Serializer除非您希望序列化结果对象,否则您很可能不需要使用它.a的另一个常见用途Serializer是验证传入数据并将其转换为预期格式.
如果你只想返回一个基本值(你没有指定"矩阵乘法的结果"实际可能是什么),那么即使只使用基本视图也是手动完成所有操作的一步.ResponseDjango REST Framework提供的对象允许您返回任意数据,并将其自动转换为类似的JSON或XML表示形式.您永远不需要json.dumps将数据调用或强制转换为特定的表示形式,该Response对象会为您完成所有操作.
from rest_framework.response import Response
from rest_framework import serializers, views
class IncredibleInputSerializer(serializers.Serializer):
model_input = serializers.CharField()
class IncredibleView(views.APIView):
def get(self, request):
# Validate the incoming input (provided through query parameters)
serializer = IncredibleInputSerializer(data=request.query_params)
serializer.is_valid(raise_exception=True)
# Get the model input
data = serializer.validated_data
model_input = data["model_input"]
# Perform the complex calculations
complex_result = model_input + "xyz"
# Return it in your custom format
return Response({
"complex_result": complex_result,
})
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我们创建了一个IncredibleInputSerializer验证model_input查询参数的插件,以确保它包含在请求中.这是一个非常基本的示例,因为Django REST Framework支持对输入执行其他操作,例如将其转换为数字或验证它是否符合特定格式.
当然,如果您需要序列化对象或对象列表,那就是Django REST Framework擅长的地方.它不一定是模型对象,它可以是具有获取数据的属性或方法的对象,甚至只是一个基本字典,Django REST Framework应该能够为您序列化它.
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |