首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在django rest框架中向post方法添加一些自定义代码

如何在django rest框架中向post方法添加一些自定义代码
EN

Stack Overflow用户
提问于 2020-12-22 14:47:31
回答 1查看 28关注 0票数 0

我是django rest框架的新手。我试图构建一个API来编辑POST方法,这样我就可以执行一些操作并更改POST主体中的一些数据。我试图遵循django rest框架网站上的一些文档和指南,但没有遵循任何内容。请帮帮我。

在这里,我需要为将要保存在数据库中的一些字段设置一些值。views.py

代码语言:javascript
复制
from .models import LoginActivity
from .serializers import LoginActivitySerializers

class LoginActivity(viewsets.ModelViewSet):
    queryset = LoginActivity.objects.all()
    serializer_class = LoginActivitySerializers

urls.py

代码语言:javascript
复制
from django.urls import path, include
from rest_framework import routers
from . import views

router = routers.DefaultRouter()
router.register(r'LoginActivity', views.LoginActivity, basename='LoginActivity')

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
appname='api'
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

serializers.py

代码语言:javascript
复制
from rest_framework import serializers
from .models import LoginActivity

class LoginActivitySerializers(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = LoginActivity
        fields = ('id', 'user_id', 'datetimelog', 'device_os', 'device_token', 'device_model')

请帮帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-22 15:30:51

您可以覆盖来自viewsets.ModelViewSet和更新请求数据的rest框架create方法,或者执行一些其他操作。

代码语言:javascript
复制
from .models import LoginActivity
from .serializers import LoginActivitySerializers

class LoginActivity(viewsets.ModelViewSet):
    queryset = LoginActivity.objects.all()
    serializer_class = LoginActivitySerializers

    def create(self, request, *args, **kwargs):
        # here you have your post data in request.data
        data = request.data
        # you can do some action here just before create action
        # after that you can call super method or return your response
        serializer = self.get_serializer(data=data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        return Response(status=status.HTTP_201_CREATED)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65404312

复制
相关文章

相似问题

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