2016-06-12 111 views
0

我想要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(),但我不太明白

回答

1

这将是更好的从_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) 
+0

tnx这个想法 – zxc

0

我的朋友为我解决了这个问题:

content ="<div class='disp' id='"+str(u.id)+'><div class='left'>"+$('#txtTask').val()+"</div><input type='checkbox' class='chkbk'></div>" 
return content