Python Django访问令牌匹配查询不存在

Python Django访问令牌匹配查询不存在,python,python-3.x,django,django-rest-framework,oauth,Python,Python 3.x,Django,Django Rest Framework,Oauth,我正在尝试测试以下代码: def customer_add_order(request): """ params: access_token restaurant_id address order_details(json format), example: [{"meal_id": 1, &q

我正在尝试测试以下代码:

def customer_add_order(request):
    """
        params: 
            access_token
            restaurant_id
            address
            order_details(json format), example:
                [{"meal_id": 1, "quantity":2}, {"meal_id": 2, "quantity":3}]
            stripe_token

        return:
            {"status": "success"}

    """
    if request.method == "POST":
        #Get token
        access_token = AccessToken.objects.get(token = request.POST.get("access_token"),
            expires__gt = timezone.now())
        #Get profile
        customer = access_token.user.customer

        # Check if customer has a order that is not delivered
        if Order.objects.filter(customer = customer).exclude(status = Order.DELIVERED):
            return JsonResponse({"status": "fail", "error": "Your Last Order must be completed"})

        # Check Address
        if not request.POST("address"):
            return JsonResponse({"status": "failed", "error": "Address is required."})

        # Ger Order Details
        order_details = json.load(request.POST["order_details"])

        order_total = 0
        for meal in order_details:
            order_total += Meal.objects.get(id = meal["meal_id"]).price * meal[quantity]

        if len(order_details)>0:
            # Step 1 - Create an Order
            order = Order.objects.create(
                customer = customer,
                restaurant_id = request.POST["restaurant_id"],
                total = order_total,
                status = Order.PENDING,
                address = request.POST["address"]
            )
            # Step 2 - Create Order details
            for meal in order_details:
                OrderDetails.objects.create(
                    order = order,
                    meal_id = meal["meal_id"],
                    quantity = meal["quantity"],
                    sub_total = Meal.objects.get(id = meal["meal_id"]).price * meal["quantity"]
                )
            return JsonResponse({"status": "success"})
我在Postman中输入参数,并使用在django中显示valid的访问令牌,并且该令牌尚未过期。我使用的是rest框架,该函数用于API

我使用以下函数创建访问令牌:

def create_user_by_type(backend, user, response, *args, **kwargs):
    request = backend.strategy.request_data()
    if backend.name == 'facebook':
        avatar = 'https://graph.facebook.com/%s/picture?type=large' % response['id']

    if request.get("user_type") == "driver" and not Driver.objects.filter(user_id=user.id):
        Driver.objects.create(user_id=user.id, avatar = avatar)
    elif not Customer.objects.filter(user_id=user.id):
        Customer.objects.create(user_id=user.id, avatar = avatar) 

另外,行
if request.get(“user\u type”)==“driver”而不是driver.objects.filter(user\u id=user.id):
以前有一个错误,因为我使用了过时的格式
request[“user\u type”]
。我不确定这是否是正确的语法,但我可以通过Postman创建访问令牌。

问题是我在Postman中使用参数输入访问令牌和其他信息,而应该在“body”中选择表单数据。

对于futures OAuth测试,我建议。它是为这类事情建造的。