URL, отправленный в Django с использованием AJAX, отличается от распечатанного из Django - PullRequest
1 голос
/ 04 июля 2019

У меня есть событие JQuery, которое, когда щелкают ссылку, отправляет запрос AJAX POST в функцию Django. Там я печатаю полученный URL и делаю с ним другие вещи. Однако, когда он печатается (Джанго), некоторые символы в URL меняются.

Конкретный URL, с которым это произошло, был:

https://www.catholicleague.org/05press_releases/quarter%204/051110_put_on_notice.htm

Который был напечатан как:

https://www.catholicleague.org/05press_releases/quarter+4/051110_put_on_notice.htm

Где %20 было изменено на +

Вот код AJAX и Django:

$("a").on("click", function(e){ 
    e.preventDefault(); 
    if(e.target.href){
            let clicked_source = e.target.href; 
            let csrf_tok = parent.document.getElementById("csrf_tok").value; 
            $.ajax({ 
                url: "/change_origin/", 
                data: JSON.stringify({"clicked_source":clicked_source}), 
                type: "POST", 
                beforeSend: function (xhr, settings) { xhr.setRequestHeader("X-CSRFToken", csrf_tok );}, 
                success: function(response) { 
                    console.log(response.msg)
                }, 
                error:function(error) { console.log(error); } 
            }); 
    } 
});
def change_origin(request):
    if request.method == 'POST':
        received = ast.literal_eval(request.body.decode())
        print(received)
        clicked_source_url = received['clicked_source']

        return JsonResponse({'msg': "ok"})

Там, где декодирование используется в качестве объекта JSON, принимается в Python как байтовидный объект. А ast используется для преобразования строкового представления объекта в реальный объект (или dict) для доступа.

Мне нужно либо:

1) Способ просто отправить строку из Ajax в Django

2) Лучшим способом справиться с полученным объектом, как я полагаю, является использование .decode(), способное вызвать эту проблему.

РЕДАКТИРОВАТЬ: ссылка является второй ссылкой в ​​части «происхождение» этой статьи

https://www.snopes.com/fact-check/an-unmerried-woman/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...