zoukankan      html  css  js  c++  java
  • django头像上传详解

    使用form组件上传头像

    实现的效果如下:

    将默认的上传文件框隐藏起来变成了一个默认的头像

    而且可以点击上传

    处理步骤

    avatar = forms.FileField(
                 widget = widgets.FileInput(attrs={"class": "form-control","style":"display:none"}),
            label='头像',
            error_messages={
                'required':'需要上传'
            }
    
        )

    给file  ipput绑定onchange事件,然后取到文件对象,通过阅读器阅读,文件上传时候要利用FormData()对象来上传

     $(':file').change(function () {
            var file_obj = $(this)[0].files[0];
            var file_Read = new FileReader();
           file_Read.readAsDataURL(file_obj);
            file_Read.onload=function (){
                    $("#avatar_img").attr('src',this.result)
            }
            });
    
        $("form button").click(function () {
            var username = $("id_username").val();
            var form_datas = new FormData();
            $.each($('input'), function (i, k) {
                form_datas.append($(this).attr('name'), $(this).val())
            });
            form_datas.append('avatar', $("[type='file']")[0].files[0]);
            //form_datas.append($('form').serialize());
            $.ajax({
                url: '',
                type: 'post',
                data: form_datas,
                contentType: false,
                processData: false,
                success: function (data) {
                    if (data.is_success) {
                        location.href = '/login/'
                    }
                    else {
                        var $inputs = $('input');
                        $inputs.parent().next().text('');
                        var d1 = data.message;
                        $inputs.each(function () {
                            if ($(this).attr('name') in d1) {
                                var temp = d1[$(this).attr('name')][0];
                                $(this).parent().next().text(temp)
                            }
                        })
    
                    }
                }
            })
        });
    生成头像预览

    后台取数据

      f_obj = request.FILES.get('avatar')
    Userinfo.objects.create_user(**form_obj.cleaned_data,avatar=f_obj)
  • 相关阅读:
    linux信号
    APM浅析
    Jackson高并发情况下,产生阻塞
    [转]slf4j 与log4j 日志管理
    2015-09-27 git学习
    MySQL学习笔记-锁相关话题
    MySQL学习笔记-MySQL数据库优化实践[转]
    MySQL学习笔记-事务相关话题
    几个关于网站架构和性能的问题(我在知乎上的问答)
    MySQL学习笔记-数据库文件
  • 原文地址:https://www.cnblogs.com/zjchao/p/9133073.html
Copyright © 2011-2022 走看看