Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 7, 2017 18:25:08

Tseka
Зарегистрирован: 2016-12-27
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Как поменять статус заказа в админке с помощью requests.

 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'})
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": ""
}
url0 = 'здесь адрес входа в админку'
url='здесь адрес заказа в админке'
s.get(url0,headers=s.headers)
s.post(url,data=data,headers=s.headers,files=formData)

Отредактировано Tseka (Сен. 7, 2017 18:28:07)

Офлайн

#2 Сен. 7, 2017 18:38:43

Vintets
Зарегистрирован: 2016-07-05
Сообщения: 41
Репутация: +  6  -
Профиль   Отправить e-mail  

Как поменять статус заказа в админке с помощью requests.

Ты это не пробовал иначе заметил бы лишнее data=data

Ты вот жёстко прописал всё, а ничего если в новой сессии будет и новый “session_id”?
Сначала грузи эту страницу отдельным запросом. Вытаскивай “session_id”, а лучше все поля сразу. Меняй нужное и отправляй назад.

Попробуй отправить как указано в http://python.su/forum/post/183433/

Отредактировано Vintets (Сен. 7, 2017 18:40:31)

Офлайн

#3 Сен. 7, 2017 18:45:09

Tseka
Зарегистрирован: 2016-12-27
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Как поменять статус заказа в админке с помощью requests.

Vintets
Ты это не пробовал иначе заметил бы лишнее data=data
Пробую на ноуте через тиамвьювер на Андроиде , а отписываюсь со смартфона , так как вышел из офиса.

Приеду домой , попробую ещё раз как вы написали.

Отредактировано Tseka (Сен. 7, 2017 18:46:54)

Офлайн

#4 Сен. 7, 2017 20:18:23

keodomir
Зарегистрирован: 2017-06-14
Сообщения: 18
Репутация: +  2  -
Профиль   Отправить e-mail  

Как поменять статус заказа в админке с помощью requests.

Должно быть как-то так.

 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 = 'здесь адрес входа в админку'
#авторизуемся
otvet = s.get(url0,headers=s.headers)
#забираем из ответа
#id и session_id
files = {
	'id': ('', 99153),
	'session_id': ('', 'rho48g04hq58qot9ir5j13h711'),
	'status': ('', 2)
}
#генерируем адрес для post запроса
url='http://ххххххххххххххххххххххххх/index.php?module=OrderAdmin&page=2&id=' + id
r=s.post(url,data=files,headers=s.headers)

какие поля обязательные надо смотреть на стороне сервера и добавлять в files.

Отредактировано keodomir (Сен. 7, 2017 20:19:32)

Офлайн

#5 Сен. 7, 2017 22:05:59

Tseka
Зарегистрирован: 2016-12-27
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Как поменять статус заказа в админке с помощью requests.

 import requests
from bs4 import BeautifulSoup
s = requests.Session()
s.auth = ('manager', 'ПАРОЛЬ')
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'})
url0 = 'http://АДРЕС САЙТА АДМИНКИ/'
url='http://АДРЕС САЙТА АДМИНКИ ЗАКАЗА'
s.get(url0,headers=s.headers)  #авторизуемся.
html=s.get(url,headers=s.headers)   #переходим авторизированные на страничку с заказом.
soup = BeautifulSoup(html.text, 'html.parser')  #парсим id и session_id , больше ничего не надо.
sesid=soup.findAll('input')[0]['value']
id_=soup.findAll('input')[1]['value']
files = {
	'id': ('', id_),
	'session_id': ('', sesid),     #подставляем спарсиные значения.
	'status': ('', 2)
}
s.post(url=url,data=files,headers=s.headers)    #post запрос посылаем  


Огромная благодарность всем , особенно keodomir и Vintets.

Отредактировано Tseka (Сен. 7, 2017 22:08:32)

Офлайн

#6 Сен. 7, 2017 22:12:25

Tseka
Зарегистрирован: 2016-12-27
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Как поменять статус заказа в админке с помощью requests.

PYTHON - Сила !!!

Офлайн

#7 Сен. 8, 2017 01:42:00

Tseka
Зарегистрирован: 2016-12-27
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Как поменять статус заказа в админке с помощью requests.

Всё-таки необходимо спарсить все эти

 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 , а то у меня меняется статус на этом заказе, но всё остальное стирается . Получается пустой заказ от клиента

Отредактировано Tseka (Сен. 8, 2017 01:42:43)

Офлайн

#8 Сен. 8, 2017 15:40:57

Vintets
Зарегистрирован: 2016-07-05
Сообщения: 41
Репутация: +  6  -
Профиль   Отправить e-mail  

Как поменять статус заказа в админке с помощью requests.

Ну это уже реализация на сервере. У меня не стирается. Обновляются только поля которые существуют в запросе.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version