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],我们会很快的为您处理。