Отправка ссылки и идентификатора по нажатой ссылке со страницы на django с помощью Ajax - PullRequest
0 голосов
/ 24 июня 2019

У меня есть обработчик событий JQuery, который я хочу использовать для отправки href и идентификатора любой нажатой ссылки на мой сервер Django. Но мне трудно найти хороший учебник / информацию об использовании Django с Ajax.

Допустим, я хочу отправить id и href ссылки, чтобы Django проверил, есть ли в ссылке https, и отправить href вместе с сообщением обратно в качестве ответа.

Что-то вроде:

$("a").on("click", function(e){ 
    e.preventDefault(); 
    if(e.target.href){
        let id = e.target.id; 
        let href = e.target.href;
        $.ajax({ 
            url: "/nameOfFunction/", 
            data: {"id":id, "href":href}, 
            type: "POST", 
            success: function(response) {
                if(response.msg=="yes"){alert(response.href+" is Secure")}
                else{alert(response.href+" is Not Secure")}    
            }, 
            error:function(error) { 
                console.log(error); 
            } 
        }); 
    }
});
def nameOfFunction(request):
    if ("https" in request.POST.get("href")):
        msg = "yes"
    else:
        msg = "no"

    return ({"msg":msg, "href":href})

Может кто-нибудь помочь мне исправить это, чтобы оно работало?

1 Ответ

0 голосов
/ 25 июня 2019

удалось выяснить это:

index.html

$("a").on("click", function(e){ 
    e.preventDefault(); 
    if(e.target.href){
        let id = e.target.id; 
        let href = e.target.href;
        $.ajax({ 
            url: "/nameOfFunction/", 
            data: JSON.stringify({"id":id, "href":href}), 
            type: "POST",
            beforeSend: function (xhr, settings) {
                            xhr.setRequestHeader("X-CSRFToken", csrftok);
                        }, 
            success: function(response) {
                if(response.msg=="yes"){alert(response.href+" is Secure")}
                else{alert(response.href+" is Not Secure")}    
            }, 
            error:function(error) { 
                console.log(error); 
            } 
        }); 
    }
});

где csrftok - это переменная со значением, которое вы получите, добавив его в html:

{% csrf_token %}
<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function(event) { 
        var csrftok = jQuery("[name=csrfmiddlewaretoken]").val();
                    });  
</script>

views.py

def nameOfFunction(request):
    if request.method == 'POST':
        received = ast.literal_eval(request.body.decode())
        id= received['id']
        link= received['link']
    if "https" in link:
        return JsonResponse({'msg': "yes", "href":link})
    else:
        return JsonResponse({'msg': "no", "href":link})

urls.py (добавить этот код)

path('nameOfFunction/', views.nameOfFunction)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...