我试图从json中的请求体中直接获取数据。在Api中进行计算将是我的Django REST API的主要部分。在未来,我将添加一些数据库,我将从其中获得一些将用于计算的数据。
我对错误AssertionError: Expected view Equation1View to be called with a URL keyword argument named "pk". Fix your URL conf, or set the 'lookup_field' attribute on the view correctly.有个问题
我不知道应该把pk参数放在哪里。使用下面的api,我应该能够在请求体中发送{"name":"xxx", value:1.23},并在json响应中获取{"emission":1.23}。当然,随着从请求体获取更多数据并将其与db中的数据连接起来,将来的工作将更加复杂,但现在我必须使它变得简单。
api urls.py:
from .views import Equation1View
from django.urls import path
urlpatterns = [
path('equation/1', Equation1View.as_view())
#path('equation/2'),
#path('equation/3'),
]views.py
from aiohttp import request
from rest_framework import generics
from .serializers import EmissionSerializer, EquaSerializer
# Create your views here.
class Equation1View(generics.RetrieveAPIView):
queryset = ''
serializer_class = EquaSerializer(context={'request':request})serializers.py
from rest_framework import serializers
class EquaSerializer(serializers.Serializer):
emission = serializers.SerializerMethodField('perform_equation')
def perform_equation(self):
request = self.context.get("request")
if request and hasattr(request, 'name') and hasattr(request, 'value'):
return request.value发布于 2022-02-23 19:26:44
RetrieveAPIView是泛型api视图,用于从模型中检索特定数据,并且该数据是基于通过url传递的pk检索的,因此将urls.py更改为
from .views import Equation1View
from django.urls import path
urlpatterns = [
path('equation/<int:pk>', Equation1View.as_view())
#path('equation/2'),
#path('equation/3'),
]https://stackoverflow.com/questions/71242254
复制相似问题