Quel est le meilleur moyen d'exclure les paramètres de request.get?
par exemple, étant donné un URL param [P> Je suis en train de boucler les clés à sortir B P> ? A = A & B = B & C = C CODE> et je veux sortir PARAM B pour générer l'URL Param to
? A = A & C = C CODE> sans changement
request.get code> p>
urllib.urlencode(request.GET.exclude('b'...)
3 Réponses :
Cela devrait fonctionner:
get = request.GET.copy() del get['b'] params = urllib.urlencode(get)
Nice, j'ai également pensé à utiliser cette approche aussi, mais je dois ensuite envelopper cela avec essayer de capturer des blocs en raison de paramètres incontrôlables.
Si vous voulez éviter Essayer / Catch, utilisez ma approche comme suit: x = cp.pop ('B', aucune), puis vérifier: si x n'est pas Aucun: ...
Cela ne fonctionne pas si vous avez plusieurs paramètres d'obtention de plusieurs noms. Par exemple? A = 1 & A = 2 & B = 3 & C = 4
C'est bien! À la dernière ligne get.urlencode () serait suffisant
Vous ne pouvez pas manipuler le request.get code> directement car il s'agit d'un
immutable code>.
Donc, faites une copie peu profonde, puis retirez la clé souhaitée.
cp = request.GET.copy()
cp.pop('b')
params = urllib.urlencode(cp)
Toutes ces réponses ont presque raison, mais ont échoué pour le cas de bord où il existe plusieurs paramètres avec le même nom de clé, qui est valide (et toute la raison pour laquelle Django utilise un https://docs.djangoproject.com/fr/dev/ref/request-Response/#django .http.querydict p> QueryDict est une classe de dictionnaire personnalisée pour traiter plusieurs
valeurs pour la même clé. Ceci est nécessaire car un formulaire HTML
éléments, notamment Donc, la bonne voie est la suivante: p> QueryDict code> et non un
dict code>). Si vous utilisez l'UrlenCode
d'Urllib CODE>, il perdra les paramètres supplémentaires, vous devez utiliser l'URLenCode fourni par
QueryDict code>.
code>, passe plusieurs valeurs
pour la même clé. p>
blockQuote>