我试图创建一个脚本,通过Python将产品添加到prestashop。
我使用prestapyt库;我可以读取文件,我可以获取新文件的模板,但我无法上传新文件。这就是我所拥有的:
from prestapyt import PrestaShopWebServiceError
from prestapyt import PrestaShopWebService
from prestapyt import PrestaShopWebServiceDict
DEBUG = 'true'
PS_SHOP_PATH = MYPATH
PS_WS_AUTH_KEY = MYKEY
prestashop = PrestaShopWebServiceDict(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG)
myproducts = prestashop.search('products');
addNewProduct(prestashop)
,其中
def addNewProduct(prestashop):
blank_product = prestashop.get('products', options={'schema': 'blank'});
pprint(blank_product)
blank_product.update({'active': '1',
'additional_shipping_cost': '',
'advanced_stock_management': '',
'description': {'language': {'attrs': {'id': '2'}, 'value': 'DESCRIPTION!!!'}},
'description_short': {'language': {'attrs': {'id': '2'},
'value': 'SHORT DESCRIPTION!!!'}},
'id': '23',
'id_category_default': '2',
'name': {'language': {'attrs': {'id': '2'}, 'value': 'NAME'}},
'new': '1',
'price': '23',
'reference': 'MYREF',
'show_price': '1',
'width': ''})
prestashop.add('products', blank_product)
运行此脚本时,我得到以下内容:
执行url:MYPATH / api / products / method:POST响应代码:400
回复标题:
{' status':' 400',' psws-version':' 1.6.1.6', ' x-powered-by':' PrestaShop Webservice',' transfer-encoding': ' chunked',' set-cookie': '的PrestaShop-a0d2999cb4d9d838ea9bbca3cf8a7a22 = gv2rmNYce013aHwM2TQ7718d8sl%2BCmTtT1hO7pqS6ItiGKUPTa%2FGUwpTprJh9pihDKJbQNq4DKb0N6SYqC5nxBM4Q%2F1AFCrubceV8yPEcMo%3D000079; 到期= 2016年9月27日星期二21:15:16 GMT;最大年龄= 1728000; 路径= mypath中;域=东西;仅Http&#39 ;, '访问时间':' 1473282916','连接':'关闭','执行时间': ' 0.008',' date':' Wed,07 Sep 2016 21:15:16 GMT',' server':' ;阿帕奇&#39 ;, '内容类型':' text / xml; charset = utf-8'}
回应机构:
' PrestaShop错误:400错误请求。内部错误。要查看此错误 请显示PHP错误。'
任何想法?
谢谢!
更新: 我添加了你的建议,这就是我得到的:
Traceback (most recent call last):
File "Script.py", line 24, in <module>
prestashop.edit('products', 1, address_data)
File "build/bdist.macosx-10.11-intel/egg/prestapyt/prestapyt.py", line 363, in edit
File "SAME", line 516,
in edit_with_url File "SAME", line 374,
in edit_with_url File "SAME", line 196,
in _execute File "SAME", line 127,
in _check_status_code
prestapyt.prestapyt.PrestaShopWebServiceError: 'PrestaShop error: 400 Bad Request. Internal error. To see this error please display the PHP errors.'
它在这里打破了:
address_data = prestashop.get('products', 1)
address_data['active'] = '0'
prestashop.edit('products', 1, address_data) -> THIS LINE
任何新想法?谢谢!
答案 0 :(得分:0)
您应该blank_product['product'].update(...)
代替blank_product.update(...)
,空白架构结构为:{product: {...}}
。
在使用edit()
功能时的编辑中,您不必指定产品ID,而是从address_data字段(至少使用当前版本)收集它。但是,你必须再次以这种方式编辑字段:address_data['product]['active']
='0'
希望这有帮助。