J'écris un programme qui transfère les paramètres reçus par le service Django B
de ʻA vers un autre service
C` tels quels sans aucune modification.
Dans un modèle, si le paramètre était un tableau, il y avait un bogue où seul le dernier élément était transféré au service C, pas le tableau entier.
Source avant modification:
>>> qd = QueryDict('egg=1&egg=2&p=3')
>>> response = requests.get('http://localhost:12345/', params=qd)
L'URL de facturation pour le service C
est maintenant /? P = 3 \ u0026egg = 2
.
Après examen, il y a une grande différence entre Query Dict
et Python dict
. Si «QueryDict» est passé tel quel en tant que «dict», tous les paramètres auront une valeur. Il semble que la méthode QueryDict.get ()
soit utilisée à l'intérieur.
>>> qd.get('egg')
u'2'
>>> qd.getlist('egg')
[u'1', u'2']
QueryDict
a une méthode dict ()
, mais elle s'est comportée différemment que prévu.
>>> qd.dict()
{u'p': u'3', u'egg': u'2'}
Enfin, j'ai trouvé cette méthode.
>>> dict(qd.iterlists())
{u'p': [u'3'], u'egg': [u'1', u'2']}
Le programme modifié ressemble à ceci:
>>> response = requests.get('http://localhost:12345/', params=dict(qd.iterlists()))
Cette fois, le service C
a été correctement transféré en tant que /? P = 3 \ u0026egg = 1 \ u0026egg = 2
, et ʻegg` a été transféré sous la forme d'un tableau.