我只是想知道:是否可以更改“文件字段”,以便在选择文件后立即将其上传,而无需使用其他按钮?
假设我成功导入了.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>
任何人都可以指导我,甚至在可能的情况下给出解决方案吗?谢谢。
答案 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
事件中执行此操作,以在用户选择文件时自动提交表单。
希望这会有所帮助,否则请告诉我哪一部分。