Django:我们能改变filefield吗?这样当一个文件被选中时,它会立即被上传吗

2024-05-13 18:27:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是想知道:是否有可能改变文件字段,这样当一个文件被选中时,它会立即被上传,而不需要额外的按钮?你知道吗

假设我从.models,.forms,网址.py等成功

中的代码型号.py

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

中的代码表单.py

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

中的代码视图.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')

中的代码上传.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>

如果可能的话,有谁能给我一个指导,给我一个解决办法吗?非常感谢。你知道吗


Tags: 文件代码pyformdataifmodelsrequest
1条回答
网友
1楼 · 发布于 2024-05-13 18:27:31

为此,您不需要在后端更改任何内容,只需要一个javascript片段来触发文件字段按钮的formsubmitonchange事件。 假设您的输入文件字段具有id=“id\u 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中有一个表单时,表单角色是收集其中输入元素的数据,并包装这些数据,并在定义的url(如“/upload\u file”)上使用表单中定义的必要方法,即“GET”、“POST”等

现在,默认情况下,只有当用户单击表单中包含类型为submit的button元素时,表单才会这样做。由于您不希望在用户必须单击的地方出现这种行为,因此您也可以通过javascript来执行,如果您使用上面定义的html,那么为了测试这种行为,您可以在file upload选项中选择文件并转到developer console并运行 这个

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

当你点击按钮时,你也会看到同样的行为发生。所以我们在change事件上这样做是为了在用户选择文件时自动提交表单。你知道吗

希望这有帮助,如果没有那么让我知道哪一部分。你知道吗

相关问题 更多 >