如何在Django中隐藏视图上的POST请求?

时间:2019-04-26 21:45:56

标签: python django django-rest-framework

我有一个视图,其中包含POST和GET请求。对于POST请求,数据来自其他URL。我不使用此视图来发布数据。但是,我对同一视图有一个GET请求,该视图从模型中检索数据并显示它。现在,当我打开(获取请求)此视图时,它将正确显示数据。但除此之外,它还显示POST请求的文本区域。我想在自己的视图中隐藏POST请求。

代码:

@api_view(['POST','GET',])
def TestView(request):
    if request.method == 'POST':
        data = json.loads(request.body.decode('utf-8'))
        customers_instance = Customers.objects.create(firstname=data[0]["value"],
                                            lastname=data[1]["value"],
                                            dob=data[2]["value"],
                                            emailaddress=data[3]["value"],
                                            address1=data[4]["value"],
                                            address2=data[5]["value"],
                                            city=data[6]["value"],
                                            state=data[7]["value"],
                                            postalcode=data[8]["value"])
        return HttpResponse('Data has been received by API')

    if request.method == 'GET':
        qs= Customers.objects.values('emailaddress','customer_id')
        serializer_class = CustomersKeySerializer
        return Response(serializer_class(many=True).to_representation(qs))

enter image description here

2 个答案:

答案 0 :(得分:0)

周杰伦

我相信您希望将用户重定向到有关数据提交的谢谢页面。

您将必须在前端进行此重定向。

如果您使用ajax进行api调用,则可以在前端脚本中执行类似的操作。

$.ajax({
    url: 'insert link to call here',
    success: function (response) {
        window.location == insert_redirect_url_here;
    }
})

答案 1 :(得分:0)

周杰伦

我认为您应该使用两种不同的视图,因为您要处理两种不同的URL:一种用于GET,一种用于POST请求。

@api_view(['GET',])
def TestGetView(request):
    if request.method == 'GET':
        qs= Customers.objects.values('emailaddress','customer_id')
        serializer_class = CustomersKeySerializer
        return Response(serializer_class(many=True).to_representation(qs))


@api_view(['POST',])
def TestPostView(request):
    if request.method == 'POST':
        data = json.loads(request.body.decode('utf-8'))
        customers_instance = Customers.objects.create(firstname=data[0]["value"],
                                        lastname=data[1]["value"],
                                        dob=data[2]["value"],
                                        emailaddress=data[3]["value"],
                                        address1=data[4]["value"],
                                        address2=data[5]["value"],
                                        city=data[6]["value"],
                                        state=data[7]["value"],
                                        postalcode=data[8]["value"])
        return HttpResponse('Data has been received by API')