django之图片预览实现方法

一、 jquery实现循环的两种方式

$.each(数组/对象,function(i,v){})
$("div").each(function(i,v){})

二、提交二进制数据用FormData

var formData=new FormData();
formData.append("username",$("#id_username").val()); 
formData.append("email",$("#id_email").val());
formData.append("tel",$("#id_tel").val());
formData.append("password",$("#id_password").val());
formData.append("password_again",$("#id_password_again").val());
formData.append("avatar_img",$("#avatar")[0].files[0]);

必须加上

contentType:false
processData:false

三、判断是什么请求

request.ajax()

四、类似于static的media

  1. 在settings.py做如下配置
MEDIA_URL="/media/"  #别名
MEDIA_ROOT=os.path.join(BASE_DIR,"app01","media","uploads")   #具体路径
  1. urls.py的配置
from django.views.static import serve
url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
  1. 用处
用处一:
 avatar = models.FileField(verbose_name='头像', upload_to='avatar', default="/avatar/default.png")
会把接收的文件放在media指代的路径与upload_to的拼接:BASE_DIR+blog+media+uploads+avatar/a.png
avatar字段在数据库中保存的是:avatar/a.png
 
用处二:                                           
`<img src="/media/avatar/a.png">`

五、头像预览

$(".avatar_file").change(function () {
       var ele_file = $(this)[0].files[0]; 当前选中的文件
       `var reader = new FileReader();`
      ` reader.readAsDataURL(ele_file);` 对应找到打开的url
       `reader.onload`=function () {
            # 方法一
            $(".avatar_img").attr("src",this.result) ; this.result是上面找到的url
            # 方法二
            $(".avatar_img")[0].src=this.result; 设置图片属性
            }
        })
<div class="form-group avatar">
       <label for="avatar">头像:</label>
        `<img src="/static/image/default.png" alt="" class="avatar_img">`
        <input type="file" id="avatar" name="avatar_file" class="avatar_file">
</div>
.avatar{
    position: relative;
    width: 70px;
    height: 70px;
}
.avatar_img,.avatar_file{
    position: absolute;
    width: 70px;
    height: 70px;
    top: 0;
    left: 46px;
}
.avatar_file{
    opacity: 0;
}
posted @ 2018-07-09 10:32  龙云飞谷  阅读(497)  评论(0编辑  收藏  举报