¿Cómo asegurarse de que el "más" no desaparezca en el QueryDict?
Estoy tratando de analizar la consulta de obtención recibida en un dictado:
from urllib.parse import quote_plus my_non_safe_string = "test=1+1" # This example, the string can be anything. (in GET query format) QueryDict(my_non_safe_string) out: <QueryDict: {'test': ['1 1']}> my_safe_string = quote_plus("test=1+1") # 'test%3D1%2B1' out: <QueryDict: {'test=1+1': ['']}>Me gustaría obtener el siguiente resultado:
<QueryDict: {'test=1+1': ['1+1']}>Debe codificar en porcentaje el signo más, al usar quote_plus también codifica el signo igual ( = ) y, por lo tanto, QueryDict no puede analizarlo de manera efectiva:
my_safe_string = f'test={quote_plus("1+1")}'esto produce:
>>> from urllib.parse import quote_plus >>> my_safe_string = f'test={quote_plus("1+1")}' >>> QueryDict(my_safe_string) <QueryDict: {'test': ['1+1']}>Si no está claro si la clave contiene algún carácter que deba escaparse, puede usar:
key = 'test' value = '1+1' my_safe_string = f'{ quote_plus(key) }={ quote_plus(value) }'¿Qué tal esto?
In [1]: from django.http import QueryDict In [2]: from urllib.parse import quote_plus In [3]: key = quote_plus("test=1+1") In [4]: value = quote_plus("1+1") In [5]: query_str = f"{key}={value}" In [6]: QueryDict(query_str) Out[6]: <QueryDict: {'test=1+1': ['1+1']}>