В примере я использую Python3, если у вас Python2 добавьте в начало файла app.py строку:
# -*- coding: utf-8 -*-
Для начала понадобится Flask. Ниже показано как установить его в виртуальное окружение.
$ mkdir flask_simple_ajax
$ virtualenv --system-site-packages --python=/usr/bin/python3 env
$ source env/bin/activate
$ pip install flask
В корне flask_simple_ajax создайте файл app.py с серверным кодом:
from flask import Flask, render_template, json, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/get_len', methods=['GET', 'POST'])
def get_len():
name = request.form['name'];
return json.dumps({'len': len(name)})
if __name__ == '__main__':
app.run(debug=True)
Далее нужно создать директории template, static/js:
$ mkdir templates
$ mkdir -p static/js
Скачайте с сайта jQuery библиотеку и положите её в static/js.
В template создайте файл index.html со следующим содержимым:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AJAX вместе с Flask</title>
<script type=text/javascript src="{{ url_for('static', filename='js/jquery-2.2.2.min.js') }}"></script>
</head>
<body>
<script>
function get_len() {
$.ajax({
type: "POST",
url: "/get_len",
data: $('form').serialize(),
type: 'POST',
success: function(response) {
var json = jQuery.parseJSON(response)
$('#len').html(json.len)
console.log(response);
},
error: function(error) {
console.log(error);
}
});
}
</script>
<form action="/get_len" method="post" name="form">
<label for="name">Введите текст:</label>
<input id="name" name="name" type="text">
<input type="button" value="Отправить" onclick="get_len();">
</form>
<div id="len"></div>
</body>
</html>
Не забудьте поправить в строке 6 версию jquery на которую скачали ранее. Можно было ничего не качать и вместо 6-й строки написать:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
Но в некоторых случаях лучше, что бы всё работало автономно.
Запускаем:
$ python3 app.py
Результат можно посмотреть в браузере по адресу http://localhost:5000/
Пример работы AJAX и Flask
Данный пример прост для понимания, вы быстро разберётесь и сожмите добавлять AJAX в свои проекты.
Готовые исходные кода можно взять на github