Вы можете сделать это, используя URLSearchParams
, поскольку тело запроса и угловой автоматически настроит тип содержимого на application/x-www-form-urlencoded
и правильно закодирует тело.
let body = new URLSearchParams();
body.set('username', username);
body.set('password', password);
this.http.post(this.loginUrl, body).map(...);
Причина, по которой это не сейчас работая для вас, вы не кодируете данные тела в правильном формате и не задаете правильные параметры заголовка.
Вам нужно закодировать тело следующим образом:
let body = `username=${username}&password=${password}`;
Вам нужно установить параметры заголовка следующим образом:
this.http.post(this.loginUrl, body, { headers: headers }).map(...);
Взгляните на PEP-238 : изменение оператора разделения
Оператор // будет иметь возможность запросить разделение по полу однозначно.
< / BLOCKQUOTE>
В принятом ответе уже упоминается PEP 238 . Я просто хочу добавить быстрый взгляд за кулисы для тех, кто интересуется тем, что происходит, не читая весь PEP.
Python отображает такие операторы, как +
, -
, *
и /
к специальным функциям, например, a + b
эквивалентен
a.__add__(b)
Что касается деления в Python 2, по умолчанию используется только /
, который отображается на __div__
, и результат зависит от типов ввода (например, int
, float
).
В Python 2.2 была введена функция __future__
division
, которая изменила семантику деления следующим образом (TL; DR из PEP 238):
/
отображается на __truediv__
, который должен «возвращать разумную аппроксимацию математического результата деления» (цитата из PEP 238) //
отображается на __floordiv__
, которая должна возвращаться польский результат /
С Python 3.0 изменения PEP 238 стали поведением по умолчанию, и в объектной модели Python не существует особого метода __div__
.
Если вы хотите использовать тот же код в Python 2 и Python 3, используйте
from __future__ import division
и придерживайтесь семантики PEP 238 /
и //
.
Надеюсь, что это может помочь кому-то мгновенно.
В Python 2.7: По умолчанию оператор разделения возвращает целочисленный вывод .
blockquote>, чтобы получить результат в double multiple 1.0 для «divend или divisor»
100/35 => 2 #(Expected is 2.857142857142857) (100*1.0)/35 => 2.857142857142857 100/(35*1.0) => 2.857142857142857
В Python 3
blockquote>// => used for integer output / => used for double output 100/35 => 2.857142857142857 100//35 => 2 100.//35 => 2.0 # floating-point result if divsor or dividend real