如何在Django RESTFramework中接受表单数据并将其与某些处理结果一起返回?

如何在Django RESTFramework中接受表单数据并将其与某些处理结果一起返回?,django,django-rest-framework,Django,Django Rest Framework,我试图理解Django RESTFramework。我已经熟悉Django了。我想创建一个端点,它接受一些文本数据并对其进行处理,然后将其与处理结果(文本)一起返回给用户。我已经完成了一些关于这个主题的教程,但我仍然不明白它是如何工作的。下面是一个工作教程项目的示例。如何编辑它以实现我的目标?这一切看起来都是自动化的 # views.py from rest_framework import generics from .models import Snippet from .serialize

我试图理解Django RESTFramework。我已经熟悉Django了。我想创建一个端点,它接受一些文本数据并对其进行处理,然后将其与处理结果(文本)一起返回给用户。我已经完成了一些关于这个主题的教程,但我仍然不明白它是如何工作的。下面是一个工作教程项目的示例。如何编辑它以实现我的目标?这一切看起来都是自动化的

# views.py
from rest_framework import generics
from .models import Snippet
from .serializers import SnippetSerializer

class SnippetList(generics.ListCreateAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer
​
class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):
    # Here I would like to accept form data and process it before returning it along with the 
    # results of the processing.
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer

但是,这与使用普通Django没有任何不同。SnippetDetail视图只是一个基于类的视图,与任何基于类的视图一样,如果要执行任何特定的操作,请重写相关的方法。在您的情况下,当接收到更新数据的PUT请求时,您可能希望重写
update()
以执行自定义逻辑。

好的,我认为您是Django rest的新手,请尝试了解其流程,以便我可以用订阅计划的示例来解释它

首先,在models.py文件中创建一个模型

来自django.db导入模型的

类订阅计划(models.Model):
plan_name=models.CharField(最大长度=255)
每月价格=型号。整型字段()
年度价格=型号。整型字段()
然后在view.py文件中创建视图,如

从rest\u framework.views导入APIView
类SubscriptionCreateAPIView(APIView):
序列化程序\u类=订阅序列化程序
def post(自我,请求):
serializer=self.serializer\u类(data=request.data)
serializer.is\u有效(raise\u exception=True)
serializer.save()
返回响应(
{'message':'已成功创建订阅计划',
“数据”:序列化程序.data},
status=status.HTTP\u 201\u已创建
)
然后定义一个用于验证的序列化程序和字段,我们可以在其中验证哪些字段将包含在请求和响应对象中。 序列化程序.py

从rest\u框架导入序列化程序
从。模型导入订阅计划
类SubscriptionSerializer(serializers.ModelSerializer):
plan_name=serializers.CharField(最大长度=255)
每月\u价格=序列化程序.IntegerField(必需=真)
年度价格=序列化程序.IntegerField(必需=真)
类元:
模型=订阅计划
字段=(
“计划名称”、“月度价格”、“年度价格”,
)
def创建(自我验证的_数据):
返回SubscriptionPlan.objects.create(**已验证的_数据)
现在在src/subciption_module/url.py中添加URL


从django.url导入路径
从.views导入SubscriptionCreateAPIView
应用程序名称='订阅计划'
URL模式=[
路径('subscription\u plan/',SubscriptionCreateAPIView.as\u view()),
]
最后,将模块url包含在根url.py文件中,主url将位于该文件中。它将与包含settings.py和wsgi.py文件的目录相同。 src/url.py

来自django.contrib导入管理
从django.url导入路径,包括
URL模式=[
路径('admin/',admin.site.url),
路径('api/v1/',包括('src.subscription\u plan.url',namespace='subscription\u plan'),
]

就这样。这就是流在django rest中的工作方式,您可以用这种方式处理数据和显示数据。有关更多详细信息,请参阅django rest文档。

我想创建一个实例。所以我可能需要重写create()方法。我一直使用FBV,所以看起来有点不熟悉。RetrieveUpdatedStroyapiView不提供创建,您需要一个包含CreateModelMixin的视图。但我认为视图集更合适。