首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用名为"pk“的URL关键字参数调用视图Equation1View

使用名为"pk“的URL关键字参数调用视图Equation1View
EN

Stack Overflow用户
提问于 2022-02-23 18:24:05
回答 1查看 355关注 0票数 0

我试图从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:

代码语言:javascript
复制
from .views import Equation1View
from django.urls import path

urlpatterns = [
   path('equation/1', Equation1View.as_view())
   #path('equation/2'),
   #path('equation/3'), 
]

views.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2022-02-23 19:26:44

RetrieveAPIView是泛型api视图,用于从模型中检索特定数据,并且该数据是基于通过url传递的pk检索的,因此将urls.py更改为

代码语言:javascript
复制
from .views import Equation1View
from django.urls import path

urlpatterns = [
   path('equation/<int:pk>', Equation1View.as_view())
   #path('equation/2'),
   #path('equation/3'), 
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71242254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档