【问题标题】:python api - shopify.Variant 404 Errorpython api-shopify.Variant 404错误
【发布时间】:2012-06-19 15:46:41
【问题描述】:

尝试使用 python 库创建新的 Variant。

创建 shopify 会话后,我只是尝试根据文档创建一个 Variant 实例

session = shopify.Session('<My Url>')
session.token = self.provider_access_token
shopify.ShopifyResource.activate_session(session)

v=shopify.Variant(dict(price="20.00", option1="Second"))
v.save()

然后得到:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Users/yoda/.virtualenvs/myproject/src/shopify/shopify/base.py", line 151, in     save
    return super(ShopifyResource, self).save()
  File "/Users/yoda/.virtualenvs/myproject/lib/python2.6/site-packages/pyactiveresource    /activeresource.py", line 732, in save
    data=self.to_xml())
  File "/Users/yoda/.virtualenvs/myproject/lib/python2.6/site-packages/pyactiveresource    /connection.py", line 313, in post
    return self._open('POST', path, headers=headers, data=data)
  File "/Users/yoda/.virtualenvs/myproject/src/shopify/shopify/base.py", line 18, in     _open
    self.response = super(ShopifyConnection, self)._open(*args, **kwargs)
  File "/Users/yoda/.virtualenvs/myproject/lib/python2.6/site-packages/pyactiveresource    /connection.py", line 258, in _open
    response = Response.from_httpresponse(self._handle_error(err))
  File "/Users/yoda/.virtualenvs/myproject/lib/python2.6/site-packages/pyactiveresource    /connection.py", line 357, in _handle_error
    raise ResourceNotFound(err)
ResourceNotFound: HTTP Error 404: Not Found

有什么想法或建议吗? :)

谢谢 RCdH

【问题讨论】:

    标签: python api http-status-code-404 shopify


    【解决方案1】:

    产品变体必须在列出、计数或创建操作时指定 product_id。这可以在Product Variant API docs 中看到,因为 product_id 是 URL 路径的一部分。正是由于这个原因,Shopify 会返回 404 错误,因为路径不存在。

    Shopify Wiki 上的 using the shopify_python_api 页面有一个关于前缀选项的部分,您可能会觉得有帮助。

    在您的示例中,您只需要更改行

    v=shopify.Variant(dict(price="20.00", option1="Second"))

    v=shopify.Variant(dict(price="20.00", option1="Second", product_id=product.id))

    假设您有一个产品要在变量 product 中创建变体。

    【讨论】:

    • 嗨迪伦,感谢您的反馈。我会试一试..但作为我尝试过的过程的一部分.. p=shopify.Product(xxxxx) p.variants.append(v) 当然没有工作..所以我需要手动指定product_id总是。将按照指示更新测试,看看会发生什么:)
    • hmmm 好吧,这是下一个奇怪的地方:嗯,这似乎是 cmets 堆栈溢出的字符限制.. 这有点糟糕。
    • v = shopify.Variant(dict(sku='test1', product_id=92048506, price="20.00")) v.save()
    • 提供:回溯(最近一次调用最后一次):文件“”,第 1 行,在 文件“/Users/rossc/.virtualenvs/cartvine/src/shopify/shopify/ base.py”,第 151 行,保存返回 super(ShopifyResource, self).save() 文件“/Users/rossc/.virtualenvs/cartvine/lib/python2.6/site-packages/pyactiveresource/activeresource.py”,第 737 行,保存 self.errors.from_xml(err.response.body) 文件“/Users/rossc/.virtualenvs/cartvine/lib/python2.6/site-packages/pyactiveresource/activeresource.py”,第 88 行,在from_xml xml_string, saveroot=True)['errors']['error'] KeyError: 'errors'
    • 但是 errors 属性是空的.... v.errors v.errors.__dict__ {'base': variant(None), 'errors': {}}
    【解决方案2】:

    您还需要将变体的 ID 与 product_id 一起传递

    # get first product
    product = shopify.Product.find()[0]
    
    # get product's first variant
    variant = product.variants[0]
    
    # pass both the product and variant ids 
    v=shopify.Variant(dict(price="20.00", product_id=product.id, id=variant.id))
    
    # finally save the variant
    v.save()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-27
      • 2021-03-20
      • 1970-01-01
      • 2017-12-30
      • 2014-09-10
      • 2016-07-17
      • 2016-02-02
      • 2012-05-18
      相关资源
      最近更新 更多