我想使用 Django Rest API 創建一個服務。我有一個功能。這個函式的結果應該回傳 2 個值,我應該以 JSON API 格式回傳這些值。該功能將像這樣作業。我將接收features_list作為引數,我將使用它來創建結果并將其顯示為def prediction函式中 json 格式的服務。
我創建了一個示例 API(我猜)它class PredictionSet在我的視圖中,但我實際上希望def prediction在我的視圖中為該函式提供服務。
我無法理解如何應用它。我感到很困惑。任何幫助,將不勝感激。
模型.py
class Liquidity(models.Model):
pred_y = models.CharField(max_length=600)
score = models.FloatField()
視圖.py
class PredictionSet(viewsets.ModelViewSet):
queryset = Liquidity.objects.all()
serializer_class = LiquiditySerializer
def prediction(request, features_list):
filename = config.FINAL_MODEL_PATH
classifier = pickle.load(open(filename, 'rb'))
scale_file = config.SCALER_PATH
scaler = pickle.load(open(scale_file, 'rb'))
sample = np.array(features_list).reshape(1, -1)
sample_scaled = scaler.transform(sample)
pred_y = classifier.predict(sample_scaled)
prob_y = classifier.predict_proba(sample_scaled)
if prob_y[0][1] < 0.5:
score = 0
elif prob_y[0][1] <= 0.69:
score = 1
else:
score = 2
pred_y = pred_y[0]
prediction_obj = Liquidity.objects.get_or_create(pred_y=pred_y, score=score)
prediction_result = prediction_obj.pred_y
prediction_score = prediction_obj.score
context = {
'prediction_result ': prediction_result,
'prediction_score ': prediction_score,
}
return context
序列化程式.py
class LiquiditySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Liquidity
fields = '__all__'
uj5u.com熱心網友回復:
如果您想從ModelViewsetDRF 中的a 回傳自定義 JSON ,您可以覆寫.list()和/或.retrieve()像這樣:
from rest_framework import status
from rest_framework.response import Response
class PredictionSet(viewsets.ModelViewSet):
queryset = Liquidity.objects.all()
serializer_class = LiquiditySerializer
# Your custom function definition
def prediction(self, request, features_list):
# The content
def retrieve(self, request, *args, **kwargs):
result = prediction(...) # Call your custom service and got result
# Return the result as JSON (url = /api/v1/predictions/1) an object
return Response({'data': result}, status=status.HTTP_200_OK)
def list(self, request, *args, **kwargs):
result = prediction(...) # Call your custom service and got result
# Return the result as JSON (url = /api/v1/predictions) a list of objects
return Response({'data': result}, status=status.HTTP_200_OK)
有關更多詳細資訊,請訪問此鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327179.html
上一篇:在DjangoORM中按查詢分組
