简体   繁体   English

如何将通过 POST 方法传递的参数与 Django rest 框架 Model 进行比较并生成自定义响应?

[英]How to compare parameter passed through POST method with Django rest framework Model and generate custom response?

I am designing Basic Django rest framework based application, i need to compare external parameters passed through POST method in Postman with Coupon code in database and generate custom response like 'This code is redeemed/validate." or " This is invalid coupon/code."我正在设计基于基本 Django rest 框架的应用程序,我需要将通过 Postman 中的POST方法传递的外部参数与数据库中的优惠券代码进行比较并生成自定义响应,如“此代码无效/兑换/代码”。 "

Here is my Model.py file:这是我的 Model.py 文件:

from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator


class Coupon(models.Model):
    code = models.CharField(max_length=50, unique=True)
    valid_from = models.DateTimeField()
    valid_to = models.DateTimeField()
    discount = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
    active = models.BooleanField()

    def __str__(self):
        return self.code

here is my views.py file:这是我的views.py文件:

from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Coupon
from .serializers import CouponSerializer
from rest_framework import viewsets

class CouponViewSet(viewsets.ModelViewSet):
    queryset = Coupon.objects.all()
    serializer_class = CouponSerializer


    @api_view(['POST'])
    def coupon_redeem(request):
        if request.method =='POST':
            serializer = CouponSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

here is my Serializer.py file这是我的 Serializer.py 文件

from rest_framework import serializers
from .models import Coupon


class CouponSerializer(serializers.ModelSerializer):
    class Meta:
        model = Coupon
        fields = '__all__'


Please help if possible, Thank you.可以的话请帮忙,谢谢。

IN Your post method u can filter the desired object like:在您的发布方法中,您可以过滤所需的 object,例如:

if serializer.is_valid():

    coup=Coupon.objects.filter(code=serializer.data['code'],active=True).exists()
    if(coup=="NULL"):
        return Response("This is invalid coupon/code",status=status.HTTP_400_BAD_REQUEST)
    else:
        return Response("This is valid code",status=status.HTTP_200_OK)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在django rest框架中返回自定义词典作为“create”方法的响应? - How to return custom dictionary as response for a “create” method in django rest framework? Django Rest Framework - 如何调用方法模型 - Django Rest Framework - How to call method model 怎样将'obj'参数传递给Django Rest Framework中的Permission类函数? - How is the 'obj' parameter passed to Permission class function in Django Rest Framework? 在 django rest 框架中返回对成功 POST 请求的自定义响应 - Return custom response to successful POST request in django rest framework 通过 Django REST Framework 中的单个 POST 方法发送 Python 字典 - Sending a Python Dictionary Through a Single POST method in Django REST Framework 带参数的Django Rest Framework序列化器模型自定义方法 - Django Rest Framework Serializer Model Custom Method with parameters 使用自定义post方法和模型覆盖Django REST ViewSet - Overriding Django REST ViewSet with custom post method and model 如何在 Django Rest 框架中为单个发布请求发送两个响应? - How to send two response for a single post request in Django Rest Framework? 如何使用django rest_framework序列化带有直通模型的ManyToManyFields - How to serialize using django rest_framework a ManyToManyFields with a Through Model Django Rest Framework:如何在GET请求的响应中添加自定义字段? - Django Rest Framework : How to add a custom field to the response of the GET request?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM