考虑一个计算"y = ax + b“的简单任务,其中"a”和"b“由模型给出,"x”由用户通过API请求给出,如http://someurl.com/api/15,其中x=15。
通常,API会以JSON格式返回"a“和"b”。但是,相反,我想在服务器上求解这个方程,并且只返回"y“。但是,我不知道如何从URL获取"x“,以及将最后一个函数返回"y”到JSON的位置。有什么想法吗?
models.py:
from django.db import models
class SimpleEquation(models.Model):
a = models.IntegerField()
b = models.IntegerField()
serializers.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
发布于 2016-08-23 02:11:32
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
发布于 2016-08-23 02:11:31
URL dispatcher将捕获该值并将其传递给视图。像这样的东西可能会起作用:
URLconf
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^regression/[+-]?\d+.\d+?/$', views.regression),
]
views.py
def regression(request, x)
x = float(x)
pars = SimpleEquation.objects.all()[0]
a = pars.a
b = pars.b
y = a*x + b
return y
https://stackoverflow.com/questions/39091108
复制相似问题