Django学习之项目记录二

1>图像上传及预览功能

思路:利用label的for属性,实际指向file类型的input标签,这样,点击label就跟点击这个input效果一样,

如下,label的 for属性,值为avatar,跟下面file类型的input的id属性值一样,再隐藏改input,就实现了

点击头像,弹出文件选取弹窗的功能。

Django学习之项目记录二

Django学习之项目记录二

预览功能思路:其实就是要获取文件弹窗里面,选择的文件对象的URL,再放入img标签,

Django学习之项目记录二

Django学习之项目记录二

选取文件对象之后,通过FileReader()对象下面的 readDataURL方法获取url,获取之后要在该对象的result里面

拿结果,需要注意的是,这里获取url可能需要一些时间,而这里代码执行之上而下,并不会等待上一句执行完毕再

执行下一句,所以,取url结果并写入img标签的函数需要加上onload方法,确保上一步已执行完成。

Django学习之项目记录二

2>注册信息提交

给注册按钮绑定事件,也就是ajax请求,如下,之前说过,请求带了文件等非文本数据时,要生成一个formdata对象

以formdata对象传递过去。

Django学习之项目记录二

Django学习之项目记录二

方式一就是针对名称和值挨个添加到formdata对象,方式二就先取到form表单的数据对象,再循环取值添加,而且还把

csrf添加进去了,更方便,简洁,完整代码如下:

Django学习之项目记录二

Django学习之项目记录二

3>注册信息校验及错误信息返回

既然数据已经到了视图函数,那就form表单校验数据,校验失败则返回错误信息

Django学习之项目记录二

Django学习之项目记录二

接下来就处理下这个msg,让这些错误信息显示到各自的输入框下面

Django学习之项目记录二

这里有个小问题,校验返回信息刷新问题,需在优化下,如下

Django学习之项目记录二

Django学习之项目记录二Django学习之项目记录二