BVDN-10 用户信息修改(3)

上回说到(怎么跟说书一样……)我们成功的把修改后的信息打印在了浏览器的后台

BVDN-10 用户信息修改(3)_第1张图片
修改后的信息

这回我们要把这些信息发送到服务器,并保存到数据库里,实现真正的修改。


$.post(url, data, function(r, err));

浏览器想向后台发数据有很多办法,但是你既然选择了vue,就最好用ajax发送。

打开accounts_profile.html,在block vuejs里做如下修改

BVDN-10 用户信息修改(3)_第2张图片
post数据

代码讲解:vue发送数据使用的是jquery的ajax解决方案,其标准格式为:$.post(url, data, function(r, err));

其实仔细看的话很好理解:url是你发送的地址,data是你发送的数据,function是对返回信息的解读,看发送是否成功。

但是!

ajax只能发送字符串!所以你需要先把data转换成字符串,所以才有最上面那一行data_to_send = JSON.stringify (data_to_send);

在网页的发送部分写完了之后我们还得在后台做相应的更改,让服务器处理收到的数据

BVDN-10 用户信息修改(3)_第3张图片
加入对post的响应

修改完成,这个功能显而易见:在服务器后台终端上显示收到的数据。我们来测试一下:登录,修改个人信息,保存!

BVDN-10 用户信息修改(3)_第4张图片
bug何其多

这是为什么?原来,django考虑到了安全问题,除了它规定的几个接口以外,其他的通信都禁止了。我们要解封要在basemain.html里加上这一句话

BVDN-10 用户信息修改(3)_第5张图片
解禁ajax

当然我们不能光写一个引入,却不在相应文件夹里放入csrf.js文件,那么这个csrf.js文件里应该写点啥内容呢?详情请参看涂伟忠大哥自强学堂里的相关内容https://code.ziqiangxuetang.com/django/django-csrf.html

解禁了csrf之后,我们就可以畅快的发送数据了,并且在Anaconda Prompt开启的服务器后台可以收到数据

BVDN-10 用户信息修改(3)_第6张图片
服务器后台

现在,数据已经传到后台了,接下来就把后台收到的数据存入数据库即可。

存入数据库

在views.py里的accounts_profile函数里做如下修改

BVDN-10 用户信息修改(3)_第7张图片
收到并保存数据

代码解读:from users.model import User是引入用户账户模型,以便接下来的修改,下面的三句话,第一句是提取要修改的用户(注意get函数),第二句是改名字,第三句是保存。做完这样的修改后,我们终于可以改名字了!

BVDN-10 用户信息修改(3)_第8张图片
感动得留下了泪水

其他数据修改方法相同,不再赘述。

我们的教程已经10章了,你此刻应该能体会到身为一个程序员的辛苦:即使是如此高集成度的模块,我们做的仅仅是一些拼接工作,仍然每一步都会遇到这样那样的bug,bug复bug,bug何其多,我生debug,万事成蹉跎。

BVDN,傻子也能建网站

你可能感兴趣的:(BVDN-10 用户信息修改(3))