如何使用Django中的woocommerce API将订单状态正确更新为“已完成”

时间:2019-05-07 11:04:31

标签: django woocommerce woocommerce-rest-api

我面临着将订单状态从“待处理”更改为“已完成”的问题。初始状态为“待处理”。

该过程必须由用户使用表单(django的模型表单)完成

我认为,当我尝试将从我的应用程序(从数据库)获取的数据传递回woocommerce api时,会引发逻辑错误。

这是我的代码:

def form_valid(self, form, **kwargs):
        order = form.save(commit=False)
        current_order = Woo_Orders.objects.get(id=self.kwargs['pk'])
        current_order.status=order.status
        eshop=current_order.eshop
        current_order.save()


        if current_order.status == "completed" :
            wcapi = API(
        url=eshop.url,
        consumer_key=eshop.consumer_key,
        consumer_secret=eshop.consumer_secret,
        wp_api=True,
        version="wc/v2",
        query_string_auth=True,
        verify_ssl = True,
        timeout=10
    )

       data = {
             "status": "completed"
             }       

          wcapi.put("orders/current_order.oid", data)
          print(wcapi.put("orders/current_order.oid", data).json())
    return super(Woo_OrderUpdateView, self).form_valid(form)

我打印的json是:

{u'message': u'\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03c0\u03bf\u03c5 \u03bd\u03b1 \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9 \u03bc\u03b5\xa0 \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03ba\u03b1\u03b9 \u03c4\u03b7 \u03bc\u03ad\u03b8\u03bf\u03b4\u03bf \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2', u'code': u'rest_no_route', u'data': {u'status': 404}}

为什么状态为404?

1 个答案:

答案 0 :(得分:1)

我的网址结构错误。我必须按以下方式构建请求:

wcapi.put("orders/"+str(current_order.oid), data)