DropZone的使用
本节内容:
1:dropzone的使用
写的好的:https://www.cnblogs.com/webenh/p/6143237.html
GitHub:https://github.com/enyo/dropzone
html:
{% extends "index.html" %}
{% block extra-css %}
<link rel="stylesheet" href="/static/plugins/dropzone/dropzone.css" type="text/css">
<style>
.dropzone {
border: 2px dashed #0087F7;
border-radius: 5px;
background: white;
}
</style>
{% endblock %}
{% block body %}
<div class="container">
<h3>老男孩教育|IT学员报名</h3>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">学员在线报名</h3>
</div>
<div class="panel-body">
<form class="form-horizontal" method="post" onsubmit="return BeforeSubmit(this)">
{% csrf_token %}
{% for field in form_obj %}
<div class="form-group col-lg-6">
<label for="inputEmail3" class="col-sm-2 control-label">{{ field.label }}</label>
<div class="col-sm-10">
{{ field }}
<span style="color: red">{{ field.errors.0 }}</span>
</div>
</div>
{% endfor %}
<div class="form-group col-lg-6">
<label for="inputEmail3" class="col-sm-2 control-label">报名班级</label>
<div class="col-sm-10">
<p>{{ enrollment_obj.class_grade }}</p>
</div>
</div>
<div class="form-group col-lg-6">
<label for="inputEmail3" class="col-sm-2 control-label">学费</label>
<div class="col-sm-10">
<p>{{ enrollment_obj.class_grade.course.price }}</p>
</div>
</div>
<div class="form-group col-lg-12">
<hr>
<pre style="height: 400px;">{{ enrollment_obj.class_grade.contract_template.content }}</pre>
<input type="checkbox" name="contract_agreed">我已认真阅读,无条件同意。
</div>
<div class="col-lg-12 col-lg-offset-11 col-sm-1">
<button type="submit" class="btn btn-info">提交</button>
</div>
</form>
<div class="form-group col-lg-12">
<hr>
<span>已上传文件</span>
<ul id="uploaded_files">
{% for ii in upload_files %}
<li>{{ ii }}</li>
{% endfor %}
</ul>
<!-- action 就是他上传的地址 默认是post方式-->
<form action="{% url 'enrollment_fileupload' enrollment_obj.id %}" class="dropzone"
id="myAwesomeDropzone">
<div class="fallback">
<input name="file" type="file" multiple/>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}
{% block extra-js %}
<script src="/static/plugins/dropzone/dropzone.js"></script>
<script>
function BeforeSubmit(ele) {
$("[disabled=true]").each(function () {
$(this).prop("disabled", false)
});
if ($("#uploaded_files").children().length ==0){
alert("请上传个人证件信息!");
return false
};
if (!$("input[name='contract_agreed']").prop("checked")){
alert("必须勾选仙剑奇侠传合同协议");
return false
};
return true
}
//myAwesomeDropzone 就是form的id,这就是他的配置
Dropzone.options.myAwesomeDropzone = {
paramName: "file", // The name that will be used to transfer the file
maxFilesize: 1, // MB
accept: function (file, done) {
if (file.name == "justinbieber.jpg") {
done("Naha, you don't.");
}
else {
done();
}
}
};
//这个是方法重写的,
{# $(function () {#}
{# Dropzone.options.myAwesomeDropzone = false;//下面的代码会new一个新的会报错,使用这个不再创建一个新的对象#}
{# var myDropzone = new Dropzone("#myAwesomeDropzone"); //html的标签id#}
{# myDropzone.on("completet", function (file) { //complete是上传成功或者失败的时候执行,只有一个参数#}
{# console.log(file);#}
{# #}
{##}
{# });#}
{# });#}
$(function() {
Dropzone.options.myAwesomeDropzone = false;
var myDropzone = new Dropzone("#myAwesomeDropzone");
myDropzone.on("success", function (file, response) {
console.log(file.name,response)
var response = JSON.parse(response);
if (!response.status) {
alert(response.err_msg);
} else {
$("#uploaded_files").append("<li>" + file.name + "</li>");
}
});
})
</script>
{% endblock %}
views:
返回已有的文件列表:
###学员报名 def enrollment(request,enrollment_id): """学员报名地址""" enrollment_obj = models.StudentEnrollment.objects.filter(id=enrollment_id)[0] ##当用户填写完报名表后再进行url进行填写的时候,直接返回页面 if enrollment_obj.contract_approved: return HttpResponse("审核通过,欢迎加入老男孩教育,请联系班主任拿取,账号密码。") elif enrollment_obj.contract_agreed: return HttpResponse("你已成功提交报名信息,请等待审核,欢迎加入老男孩教育") if request.method == "POST": form_obj = forms.CustomerForm(instance=enrollment_obj.customer,data=request.POST) if form_obj.is_valid(): form_obj.save() ##用户填写信息后要进行用户同意和签署时间 enrollment_obj.contract_agreed = True #from django.utils.timezone import datetime 默认的datetime模块是不带时区的 enrollment_obj.contract_signed_date = timezone.now() enrollment_obj.save() return HttpResponse("你已成功提交报名信息,请等待审核,欢迎加入老男孩教育") else: form_obj = forms.CustomerForm(instance=enrollment_obj.customer) # 列出学员已上传的文件 upload_files = [] enrollment_upload_dir = os.path.join(settings.CRM_file_upload, enrollment_id) if os.path.isdir(enrollment_upload_dir): upload_files = os.listdir(enrollment_upload_dir) return render(request,"crm/enrollment.html",locals())
接受上传文件:
###报名上传视图 @csrf_exempt def enrollment_file(request,enrollment_id): """用户上传文件""" enrollment_file_dir = os.path.join(settings.CRM_file_upload,enrollment_id) if not os.path.isdir(enrollment_file_dir): os.makedirs(enrollment_file_dir) file_obj = request.FILES.get("file") file_name = file_obj.name file_path = os.path.join(enrollment_file_dir, file_name) if len(os.listdir(enrollment_file_dir)) <3: with open(file_path,"wb") as f : for line in file_obj.chunks(): f.write(line) else: return HttpResponse(json.dumps({"status":False,"err_msg":"最多只能存三个文件"})) return HttpResponse(json.dumps({'status': True, }), )

浙公网安备 33010602011771号