Форум сайта python.su
0
Добрый день , есть админка для работы с заказами интернет магазина. Хочу с помощью POST поменять статус заказа , но не могу правильно всё оформить. Подскажите как правильно отправлять такие данные.
import requests s = requests.Session() s.auth = ('manager', 'pass') s.headers.update({'x-test': 'true'}) s.headers.update({ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0'}) data = {'status':'2' } url0 = 'здесь адрес входа в админку' url='здесь адрес заказа в админке' s.get(url0,headers=s.headers) r=s.post(url,data=data,headers=s.headers)
Отредактировано Tseka (Сен. 7, 2017 16:12:36)
Прикреплённый файлы:
contente-type.jpg (11,9 KБ)
Офлайн
2
А у вас авторизация проходит?
response = s.get(url0,headers=s.headers)
print(response.content)
Офлайн
6
Ты неправильно отправляешь. Там же Multipart-Encoded. Почитай в справке requests.
files = {'status': '2'} r = s.post(url, files=files)
files = {'status': ('', '2')} r = s.post(url, files=files)
Отредактировано Vintets (Сен. 7, 2017 16:54:47)
Офлайн
0
keodomirДа проходит.
А у вас авторизация проходит?
Офлайн
2
Посмотрите, как выглядит запрос, когда вы нажимаете кнопку. Можно, например, через расширения браузера. Я использую это:
https://chrome.google.com/webstore/detail/jquery-ajax-capture/hgicjmfpmakeejdfemjhokokaijfdjng?utm_source=chrome-app-launcher-info-dialog
После этого можно будет легко сымитировать запрос.
Офлайн
6
Он же это всё сделал и приложил скрины.
По ним видно,что запрос Content-Type: multipart/form-data;
Офлайн
0
<!-- Основная форма --> <form method=post id=order enctype="multipart/form-data"> <input type=hidden name="session_id" value="rho48g04hq58qot9ir5j13h711"> <div id="name"> <input name=id type="hidden" value="99153"/> <h1>Заказ №99153 <select class=status name="status"> <option value='0' >Новый</option> <option value='1' >Принят</option> <option value='2' >Выполнен</option> <option value='3' selected>Удален</option> </select>
Отредактировано Tseka (Сен. 7, 2017 17:52:05)
Офлайн
6
А почему ты отправляешь только одно поле?
Там же есть поле с номером заказа. Ещё ‘session_id’.
Как минимум нужно ещё их отправлять. Сервер разбирая ответ оттуда берёт данные куда ему в базу вставлять и к чему подвязывать.
Может там ещё что важное есть, что не влезло в скрин.
files = { 'id':('', 99153), 'session_id':('', 'rho48g04hq58qot9ir5j13h711'), 'status':('', 2) }
Отредактировано Vintets (Сен. 7, 2017 18:07:34)
Офлайн
0
Vintets
Может там ещё что важное есть, что не влезло в скрин.
var formData = {
"address": "Город,ул. Миргородская д.39-а, кв.8",
"comment": "",
"coupon_discount": "0.00",
"delivery_id": "3",
"delivery_price": "0.00",
"discount": "0.00",
"email": "",
"id": "99153",
"nalozhka": "1",
"name": "Алла ",
"note": "наложка(И) + Отправка 07,09",
"np_city": "Марин",
"np_warehouse": "Отделение №2 (до 30 кг): ул. Пирсовая, 2а",
"order_option": "nalozhka",
"payment_method_id": "5",
"phone": "38099хххххххх",
"purchases[amount][127654]": "1",
"purchases[id][127654]": "127654",
"purchases[price][127654]": "260.00",
"purchases[variant_id][127654]": "26419",
"related": "",
"separate_delivery": "1",
"session_id": "hov62ku9iolsrmcv7mhhri8fj6",
"status": "2",
"ttn": "2ХХХХХХХХХХХХ4",
"user_id": ""
};
$.post('http://ххххххххххххххххххххххххх/index.php?module=OrderAdmin&page=2&id=99153', formData)
.done (showResult)
.fail(showError);
Отредактировано Tseka (Сен. 7, 2017 18:07:34)
Офлайн
6
Показывай новый код с передачей files.
Офлайн