使用する
- フラスコ
- 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
datatablesはajaxリクエストを作成し、テーブルにデータを入力します。次に、各tdはjeditableを使用してその場で編集可能になります。tdが変更されるとすぐに、jeditableは以下を含むlocalhost/modifyへのPOSTリクエストを行います。
- 行ID(ユーザークラスと同じID)
- 新しい変更された値
- 変更されたテーブルの列(引数のために、id / username / emailの3つの列があると仮定します)(int)
ここで、localhost / modifyを処理する関数で、行IDを取得し、ユーザーオブジェクトを作成して、その特定の行をデータベースにクエリし、変更する必要のあるプロパティを確認し、新しい値で変更してコミットします。データベースに。これが私がこれまでに得たものです:
@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'
このように、はい、それは機能しますが、より美しいアプローチでなければなりません。これはあまり...pythonicではないようです
ミハイ