Использование
- Flask
- Flask-sqlalchemy
- Sqlalchemy
- Jquery
- DataTables (плагин jquery)
- Jeditable (плагин jquery)
Рассмотрим этот класс пользователя (прямо из документов flask-sqlalchemy):
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
Таблицы данных делают запрос Ajaxи заполняет таблицу.Каждый тд затем становится редактируемым на месте с помощью jeditable.Как только td изменен, jeditable делает POST-запрос к localhost / modify, содержащий:
- Идентификатор строки (тот же идентификатор из класса пользователя)
- Новое измененное значение
- Столбец таблицы, который был изменен (ради аргумента давайте предположим, что есть три столбца id / username / email) (int)
Теперь я быкак в функции, которая обрабатывает localhost / modify, я беру идентификатор строки, создаю объект пользователя и запрашиваю базу данных для этой конкретной строки, вижу, какое свойство необходимо изменить, изменяю его с новым значением и фиксирую в базе данных.Вот что я получил до сих пор:
@app.route('/modify', methods=['GET', 'POST'])
def modify()
if request.method == 'POST' :
user = user.query.get(form.row_id)
if form.column_id == int(0):
user.id = form.value
elif form.column_id == int(1):
user.username = form.value
elif form.column_id == int(2):
user.email = form.value
else:
pass
db.session.commit()
return 'ok'
Таким образом, да, это работает, но должен быть более красивый подход.Этот кажется не очень ... питоническим
Михаем