Как правильно вызвать функцию Django, используя AJAX? - PullRequest
0 голосов
/ 09 сентября 2018

Я хотел бы вызвать функцию по нажатию кнопки без обновления страницы в Django, поэтому я использую AJAX, но это не работает. Я не знал об AJAX раньше, и я новичок в этом, но это то, что мне удалось после 3 дней тестирования:

Views.py работают, но функция AJAX не работает. Это печатает Ups, NOT AJAX

views.py:
bot = Instagram()
def instabot(request):
    template = 'instabot.html'
    return render(request, template)

def runinstabot(request):
    print('Welcome here')
    if request.method == 'POST':
        runinstabot.login = request.POST.get('login')
        runinstabot.password = request.POST.get('password') 
        if request.is_ajax():
            bot.login(runinstabot.login, runinstabot.password)
            bot.search()
        else:
            print('Ups, NOT AJAX')
        print(request.POST)
        return HttpResponse('')

    instabot.html:
{% load static %}
<!DOCTYPE html>
<html>
<head>
    <title>test bot</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

</head>
<body>
TEST:
<form id='runbot' action='/runinstabot/' method="post" >
    {% csrf_token %}
    <input type='text' id='login' />
    <input type='text' id='password' />
    <input type="submit" value="Submit">
</form>
</body>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" type="text/javascript">
    $('runbot').on('submit', function(event){
        event.preventDefault();
        $.ajax({
             type:"POST",
             url: "{ url 'runinstabot' }",
             data: {
                    login:$('#login').val(),
                    password:$('#password').val(),
                    csrfmiddlewaretoken:$("input[name=csrfmiddlewaretoken]").val()
                    },
        });       
   });

</script>
</html>

urls.py:
    url(r'^instabot/', instabot, name='instabot'),
    url(r'^runinstabot/', runinstabot, name='runinstabot'),

Instagram() - это код на Python, который использует Selenium для автоматизации некоторых вещей

Я бы оценил все советы

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