jQuery ui sortable – 使用Python / Flask / SQLite保存到数据库

我需要一个拖放效果,只是找到jQuery sortable最可行和最简单的解决方案,但我想在重新排序后保存位置。 使用php / sqlite我可以这样做,但因为我使用框架烧瓶解决方案必须在python中。 我来这里搜索代码

HTML:

$(function() { var $sortables = $("#sortMe").sortable({ stop: function() { var sortedItems = $sortables.sortable("toArray"); } }); }); 

潘岳:

 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite' class Sortable(db.Model): __tablename__ = 'sortables' id = db.Column(db.Integer, primary_key=True, autoincrement=True) data = db.Column(db.String) def __init__(self, data): self.data = data @app.route("/saveorder", methods=['GET', 'POST']) def save_order(): if request.method == "POST": 

编辑。

现在,我明白了

HTML:

  $(function() { $('#sortMe').sortable({ update: function(event, ui) { var postData = $(this).sortable('serialize'); console.log(postData); $.ajax({ url: '/saveorder', type: 'POST', contentType: 'application/json', dataType: 'json', data: JSON.stringify({list: postData}), success: function (ret) { alert('JSON posted: ' + JSON.stringify(ret)); } }); } }); }); 

潘岳:

 @app.route("/saveorder", methods=['GET', 'POST']) def saveorder(): json = request.json print(json) return jsonify(json) 

我找到了解决方案

https://github.com/h01000110/sortable-flask

app.py

 from flask import Flask, render_template, request, jsonify from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True db = SQLAlchemy(app) class Sortable(db.Model): __tablename__ = 'sortables' id = db.Column(db.Integer, primary_key=True, autoincrement=True) data = db.Column(db.String) def __init__(self, data): self.data = data db.create_all() @app.route('/') def index(): sort = Sortable.query.filter_by(id=1).first() ordem = str(sort.data) return render_template('index.html', sort=sort, ordem=ordem) @app.route('/post', methods=['GET', 'POST']) def post(): json = request.json x = json.replace('item[]=', ',') y = x.replace('&,', '') final = y.replace(',', '') sort = Sortable.query.filter_by(id=1).first() sort.data = final db.session.commit() return jsonify(final) if __name__ == '__main__': app.run(debug=True) 

的index.html

   Flask example      
    {% for i in ordem %}
  • item {{ i }}
  • {% endfor %}