Django:我们可以更改文件字段,以便在选择文件后立即将其上传

时间:2019-07-05 06:36:58

标签: python html django file-upload

我只是想知道:是否可以更改“文件字段”,以便在选择文件后立即将其上传,而无需使用其他按钮?

假设我成功导入了.models,.forms,urls.py等中的所有内容,

models.py 中的代码:

class data(models.Model):
    Datas = models.FileField(upload_to='datas/upload')

forms.py 中的代码:

class form1(forms.ModelForm):
    class Meta:
        model = data
        fields = ('Datas',)

views.py 中的代码:

def upload(request):
    if request.method == 'POST' and 'btnform1' in request.POST:
        newform1 = form1(request.POST, request.FILES)
        if newform1.is_valid():
            newform1.save()
            return redirect('list')

upload.html 中的代码:

<h2>Data</h2>
     <form method="post" enctype="multipart/form-data"> {% csrf_token %}
     {{newform1.as_p}}
<!--        <button type="submit" class="btn btn-primary" name="btnform1">Upload Data</button>-->
     </form>

任何人都可以指导我,甚至在可能的情况下给出解决方案吗?谢谢。

1 个答案:

答案 0 :(得分:0)

为此,您无需在后端进行任何更改,只需更改一个JavaScript代码段即可在文件字段按钮的change事件触发表单提交。 假设您的输入文件字段的ID为=“ id_file”,格式为ID =“ image-upload-form”。

如果您的html看起来像

<form id="image-upload-form" method="POST" role="form" enctype="multipart/form-data">
    {% csrf_token %}
    <input name="id_Datas" type="file" id="id_datas">
    <button type="submit" class="btn btn-primary" name="btnform1">Upload</button>
</form>

然后js看起来像。

$("#id_datas").on("change", function(event){
  $("#image-upload-form").submit();
});

说明:

看看您的html中是否有表单,表单的作用是收集表单中输入元素的数据,然后包装这些数据并采用表单中定义的必要方法,例如“ GET”,“ POST”等。定义的操作,例如“ / upload_file”

现在默认情况下,仅当用户单击表单中包含的类型为Submit的按钮元素时,表单才会执行此操作。由于您不希望用户单击该行为,因此也可以通过javascript进行操作(如果您按上述定义的html),那么为了测试该行为,您可以在文件上传选项中选择该文件,然后转到开发者控制台并运行

$("#image-upload-form").submit();

当您单击按钮时,也会看到相同的行为。因此,我们在change事件中执行此操作,以在用户选择文件时自动提交表单。

希望这会有所帮助,否则请告诉我哪一部分。