Параметр запроса Django удаляется, если в нем есть знак (+)
Когда я пытаюсь получить параметр строки запроса, все работает, но только знак + удаляется.
Вот url файла:
urlpatterns = [
re_path(r'^forecast/(?P<city>[\w|\W]+)/$', weather_service_api_views.getCurrentWeather)]
Здесь просмотр Файл:
@api_view(['GET'])
def getCurrentWeather(request, city):
at = request.GET["at"]
print(at)
return JsonResponse({"status": "ok"}, status=200)
Итак, если я обращусь к серверу с таким URL:
http://192.168.0.5:8282/forecast/Bangladesh/?at=2018-10-14T14:34:40+0100
вывод at выглядит следующим образом:
2018-10-14T14:34:40 0100
Всегда зачеркивается знак +. Никакие другие символы не удаляются. Я использовал такие символы, как !, = , - и т.д.
Поскольку +
является специальным символом, вам придется закодировать ваше значение. Где кодировать? Это зависит от того, как вы генерируете значения для at
. Исходя из ваших URL и конечных точек, похоже, что вы работаете над погодным приложением, и значение at
генерируется Javascript. Вы можете закодировать ваши значения с помощью encodeURIComponent
let at = encodeURIComponent(<your_existing_logic>)
eg:
let at = encodeURIComponent('2018-10-14T14:34:40+0100')
вернет результат
'2018-10-14T14%3A34%3A40%2B0100'
затем в бэкенде вы можете получить это значение с помощью:
at = request.GET.get('at')
это даст вам желаемое значение, 2018-10-14T14:34:40+0100
в данном случае.
Если вы создаете параметр at
в бэкенде, то есть несколько способов добиться этого. Вы можете рассмотреть это решение:
Как кодировать параметры URL в Python?