使用Flask,Flask-sqlalchemy和jQuery从数据库返回数据
问题描述:
我想要div.disp获取要添加到数据库的数据的id,它适用于第一次添加,但是对于下一次添加,它将会与第一次添加相同的ID。使用Flask,Flask-sqlalchemy和jQuery从数据库返回数据
@app.route('/')
@app.route('/index')
def index():
tsklst = models.User.query.order_by('id asc').all()
last = tsklst[len(tsklst)-1].id+1
return render_template('index.html',last=last)
@app.route('/_add')
def add_():
toDo = request.args.get('task')
u = models.User(task = str(toDo))
db.session.add(u)
db.session.commit()
return render_template('index.html')
自己的思想,div.disp应有的属性ID中的最后+ 1添加的数据到数据库
$(document).ready(function(){
$('#btnTask').click(function(){
if ($('#txtTask').val()!=''){
$.getJSON('/_add',{
task: $('#txtTask').val(),
});
$('.content').append("<div class='disp' id='{{ last }}'><div class='left'>"+$('#txtTask').val()+"</div><input type='checkbox' class='chkbk'></div>");
}
$('#txtTask').val('');
$('#txtTask').focus();
});
});
目前我看db.session.refresh(),但我不太明白
答
这将是更好的从_add
端点返回一个json类型的对象,而不是渲染一个模板
@app.route('/_add')
def add_():
toDo = request.args.get('task')
u = models.User(task = str(toDo))
db.session.add(u)
db.session.commit()
task = {}
task['id'] = u.id
task['content'] = u.content
return jsonify(task=task)
答
我的朋友为我解决了这个问题:
content ="<div class='disp' id='"+str(u.id)+'><div class='left'>"+$('#txtTask').val()+"</div><input type='checkbox' class='chkbk'></div>"
return content
tnx这个想法 – zxc