Как скрыть POST-запрос на просмотр в Django? - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть один вид, который имеет запрос POST и GET. Для запроса POST данные поступают с другого URL. Я не использую это представление для размещения данных. Однако у меня есть запрос GET для того же представления, которое извлекает данные из модели и отображает их. Теперь, когда я открываю (запрос 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 голосов
/ 27 апреля 2019

Jay,

Я думаю, вам следует использовать два разных представления, поскольку вы имеете дело с двумя разными 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')
0 голосов
/ 27 апреля 2019

Джей,

Я полагаю, что вы хотите перенаправить пользователя на страницу спасибо о предоставлении данных.

Вам нужно будет сделать это перенаправление вваш веб-интерфейс.

Если вы делаете вызовы через API с помощью ajax, вы можете сделать что-то подобное в своем скрипте веб-интерфейса.

$.ajax({
    url: 'insert link to call here',
    success: function (response) {
        window.location == insert_redirect_url_here;
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...