python - 如何使用 Django REST Framework 读取数据、应用函数并返回结果?

标签 python json django django-rest-framework

考虑一个计算“y = ax + b”的简单任务,其中“a”和“b”由模型给出,“x”由用户通过 API 请求给出,例如 http://someurl .com/api/15,其中 x=15。

通常,API 会以 JSON 格式返回“a”和“b”。但是,相反,我想在服务器上求解这个方程并且只返回“y”。但是,我不知道如何从 URL 获取“x”以及将最后一个函数放置在哪里以将“y”返回到 JSON。有什么想法吗?

模型.py:

from django.db import models

class SimpleEquation(models.Model):
    a = models.IntegerField()
    b = models.IntegerField()

序列化器.py:

from rest_framework import serializers
from .models import SimpleEquation

class SimpleEquationSerializer(serializers.ModelSerializer):
    class Meta:
        model = SimpleEquation
        fields = ('a','b') # Should return 'y' instead

views.py:

from rest_framework import generics
from .serializers import SimpleEquationSerializer

class Results(generics.ListAPIView):
    queryset = SimpleEquation.objects.all()[0]
    serializer_class = SimpleEquationSerializer

到目前为止我的愚蠢功能:

def the_function(request):
    x = SOME_REQUEST_GET_METHOD
    pars = SimpleEquation.objects.all()[0]
    a = pars.a
    b = pars.b
    y = a*x + b
    return y

最佳答案

使用Serializer Method Field

from rest_framework import serializers
from .models import SimpleEquation

class SimpleEquationSerializer(serializers.ModelSerializer):

    y = serializers.SerializerMethodField('get_y')

    class Meta:
        model = SimpleEquation
        fields = ('y')

    def get_y(self, obj):
        x =  self.context['request'].x
        y = obj.a*x + obj.b  # obj comes from the queryset from view
        return y

关于python - 如何使用 Django REST Framework 读取数据、应用函数并返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39091108/

相关文章:

jquery - 无效的 JSON 原语 : object

django - 重新运行 Django 数据迁移

javascript - 根据在 Django 的另一个字段中选择的选项动态更新字段的值

python - 属性错误 : 'Series' object has no attribute 'as_matrix' Why is it error?

python - 调用列表上的函数

python - 使用cherry.py调用函数

java - 将 JSON 文件解析为 Java 对象

c# - 如何在 C# 中找到 json 记录的所有不同键?

python - 使用 oauth2 通过 googleapi gmail python 发送电子邮件

python - 打印可能存在也可能不存在的嵌套字典值