#python #flask
#python #flask
Вопрос:
Я использую URL-адрес flask для получения параметров спереди назад, чтобы передать его в запрос, и он отлично работает с простыми строками без каких-либо специальных символов или пробелов в нем. Однако, когда я передаю «Historic_data CBD_3 (10WAY_10.0mWx59.0mW: 28)», он не работает. (строка со специальным символом, например () . : и с пробелом)
Я запускаю его в Linux. Я протестировал его в Windows, и все было в порядке.
front
@app.route('/design/<string:des>')
callback
/design/Historic_Intersection CBD_3 (3WAY_6.0mWx5.0mW:10)
Я думаю, что здесь проблема с кодировкой URL, есть предложения?
Ответ №1:
Смотрите quote
и unquote
в urllib.parse . https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote
В принципе, URL-адреса не могут содержать определенные символы (например, пробелы), поэтому, если ваш URL-адрес содержит один из этих плохих символов, он заменяется, что вы и наблюдаете. quote
Функция принимает любую строку и выдает вам ее URL-версию. unquote
Принимает версию URL и возвращает вам оригинал.
Если вам нужно сделать то же самое в параметрах запроса, quote_plus
unquote_plus
вместо этого используйте and .
Ответ №2:
Вместо этого, используя url pass, вы можете передать его с $.ajax({data: data})
let data_to_back = "Historic_data CBD_3 (10WAY_10.0mWx59.0mW:28)"
$.ajax({
type: 'GET',
url: 'pass/design/',
dataType: "json",
data: data)}