Библиотека запросов Python для заполнения списка опций - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь заполнить веб-форму, используя запросы Python.Кто-нибудь знает правильный синтаксис при наличии выпадающего списка (список опций)?

Я могу успешно публиковать текстовые поля в форме, но не список опций

import requests

URL = 'http://127.0.0.1:8000/recoater/new/'
payload = {
   'data': '40',
   'machine': '"1">MachineA<',
}

r = requests.post(URL, data=payload)
print (r)
print(r.text)

Возвращаетэто:

<ul class="errorlist"><li>Select a valid choice. That choice is not one of 
the available choices.</li></ul>
<p><label for="id_machine">Machine:</label> <select name="machine" required 
id="id_machine">
<option value="">---------</option>
<option value="1">MachineA</option>

1 Ответ

0 голосов
/ 25 августа 2018

Для <select>..</select> данные POST отправляют value=".." выбранного <option>, поэтому, если вы хотите MachineA, вы должны отправить его с 'machine': '1' в качестве полезной нагрузки:

запросы на импорт

URL = 'http://127.0.0.1:8000/recoater/new/'
payload = {
   'data': '40',
   'machine': <b>'1'</b>,
}

r = requests.post(URL, data=payload)
print (r)
print(r.text)

Формы Django (или другие механизмы, обрабатывающие запрос) имеют логику для сопоставления этого значения с машиной, которая связана с этим значением: в конце концов, текств этом варианте просто текстовое представление *1013* объекта Machine может содержать много (дополнительных) данных, которые не отображаются (или отображаются, но неструктурированно).

Таким образом, браузер запрашивает веб-страницу:

<select <b>name="machine"</b> required id="id_machine">
    <option <b>value=""</b>>---------</option>
    <option <b>value="1"</b>>MachineA</option>
</select>

Отправляет в данных POST запись, связывающую name <select> (здесь 'machine'), которая являетсясвязанный с value выбранной опции (здесь '' или '1').Точно так же, как <input name="data" type="text"> имеет также параметр value, для которого установлено значение, которое вы вводите в текстовое поле.

...