flask 更新数据库失败

在使用SQLALchemy更新数据的时候,一直不成功。
数据更新的方式采用ajax,具体代码如下:

$(function () {      $('#user_profile').click(function (event) {          event.preventDefault();  //prevent the actual form post          user_profile();        });        // Inject our CSRF token into our AJAX request.      $.ajaxSetup({          beforeSend: function (xhr, settings) {              if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {                  xhr.setRequestHeader("X-CSRFToken", $('#csrf_token').val())              }          }      })  })    function user_profile() {      $.ajax({          type: $('#tab_1_1 form').attr("method"),          url: $('#tab_1_1 form').attr("action"),          data: $('#tab_1_1 form').serialize(),          contentType: "application/x-www-form-urlencoded",          success: function (data) {              console.log(data);          }      });  }  

但是提交到后台无法获取数据,提交的数据结构如下所示:

csrf_token=IjkwNjQ5OTE2MTJjMGMwZDk4OTc5ZmQxOTZjOTgxMmU4MmU0ZDRmMzAi.DjHgiQ.hDgD-Yz89RkJZPL-YorWJdG7Z7c&fullname=%E9%BB%84%E5%85%B5&nick_name=%E7%8B%AC%E8%A1%8C%E4%BE%A0&phone_number=13429950072&about_me=%E6%88%91%E6%98%AF%E4%B8%80%E4%B8%AA%E5%AE%85%E7%94%B7%EF%BC%8C%E8%AF%B7%E5%A4%A7%E5%AE%B6%E4%B8%8D%E8%A6%81%E6%89%93%E6%89%B0%E6%88%91%E7%BB%A7%E7%BB%AD%E5%AE%85%E3%80%82&website_url=https%3A%2F%2Fpdf-lib.org  

之后看一下后台如何接收数据:

# 验证提交  if form.validate_on_submit():      current_user.fullname = form.fullname.data      current_user.phone_number = form.phone_number.data      current_user.nick_name = form.nick_name.data      current_user.website_url = form.website_url.data      try:          sql_query=str(db.session.add(current_user._get_current_object()))          print(sql_query)          print(current_user._get_current_object())          db.session.commit()      except:          flash('账户更新失败!')      flash('账户资料已更新!')  

使用这种方式无法获取数据,数据一直没有更新,搞不清是什么情况。之后不断调试,参考了别人文章之后终于把问题解决了。
需要修改源代码如下:

# 验证提交      if form.validate_on_submit():          current_user.fullname = request.values.get('fullname', 0)          current_user.phone_number = request.values.get('phone_number', 0)          current_user.nick_name = request.values.get('nick_name', 0)          current_user.about_me = request.values.get('about_me', 0)          current_user.website_url = request.values.get('website_url', 0)          try:              db.session.add(current_user._get_current_object())              db.session.commit()          except:              flash('账户更新失败!')          flash('账户资料已更新!')  

这个是flask获取post参数的方式,具体可以参考这里: https://pdf-lib.org/Home/Details/5201

这样再次获取数据就没有什么问题了。
再次使用SQLALchemy保存数据,数据已经成功更新了。

原文出处:pdf-lib -> https://pdf-lib.org/Home/Details/5831

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。