如何使用Django REST框架读取数据、应用函数并返回结果?

2024-05-29 01:44:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

在模型.py公司名称:

from django.db import models

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

在序列化程序.py公司名称:

^{pr2}$

在视图.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

Tags: frompy模型import名称apiobjectsmodels
2条回答

URL dispatcher将捕获该值并将其传递给视图。类似这样的方法可能会奏效:

URLconf

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^regression/[+-]?\d+.\d+?/$', views.regression),
]

views.py

^{pr2}$

使用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

相关问题 更多 >

    热门问题