使我的Django视图成为DjangoRestFramework API端点

时间:2020-10-20 08:27:03

标签: python django django-rest-framework django-views payment-processing

我有一个付款验证视图,其中使用了一些参数,例如密钥和其他一些身份验证参数。

我想将视图变成API端点,以便我可以输入参数并返回响应。

我熟悉制作基本端点CRUD端点,该端点在models.py中具有类,但是没有。

P.S:我还使用了具有响应的外部API,我要做的就是发送所需的参数,然后如果它们正确,它将返回响应。

Views.py

def verify_paystack_payment(request):
    url = "https://api.paystack.co/transaction/verify/262762380"

    payload = {
        "email": "email@yahoo.com",
        "amount": "10000",
        "currency": "NGN",
        "reference": "262762380",
        "metadata": {
            "custom_fields": [
                {
                    "display_name": "Mobile Number",
                    "variable_name": "mobile_number",
                    "value": "+2348012345678"
                }
            ]
        }
    }

    files = {}

    headers = {
      'Authorization': 'Bearer **MY SECRET KEY**',
      'Content-Type': 'application/json'
    }

    response = requests.request("GET", url, headers=headers, data= payload, files=files)

    return render(request, "transaction/pay.html")

1 个答案:

答案 0 :(得分:1)

如果您使用的是Django 1.7+,则可以使用JsonResponse

from django.http import JsonResponse

def verify_paystack_payment(request):
    url = "https://api.paystack.co/transaction/verify/262762380"

    payload = {
        "email": "email@yahoo.com",
        "amount": "10000",
        "currency": "NGN",
        "reference": "262762380",
        "metadata": {
            "custom_fields": [
                {
                    "display_name": "Mobile Number",
                    "variable_name": "mobile_number",
                    "value": "+2348012345678"
                }
            ]
        }
    }

    files = {}

    headers = {
      'Authorization': 'Bearer **MY SECRET KEY**',
      'Content-Type': 'application/json'
    }

    response = requests.request("GET", url, headers=headers, data= payload, files=files)
    return JsonResponse({"data":response.text})

在Django 1.7之前的版本中,您将这样做:

import json 
from django.http import HttpResponse

def verify_paystack_payment(request):
    #Function code
    return HttpResponse(json.dumps({"data":response.text}),content_type="application/json")
相关问题