Я хотел бы вызвать функцию по нажатию кнопки без обновления страницы в 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 для автоматизации некоторых вещей
Я бы оценил все советы