Python Django:我们可以改变filefield,这样当选择一个文件时,它会立即被上传吗
我只是想知道:是否有可能改变文件字段,这样当选择一个文件时,它会立即被上传,而不需要额外的按钮 假设我成功导入了.models、.forms、url.py等的所有内容 models.py中的代码Python Django:我们可以改变filefield,这样当选择一个文件时,它会立即被上传吗,python,html,django,file-upload,Python,Html,Django,File Upload,我只是想知道:是否有可能改变文件字段,这样当选择一个文件时,它会立即被上传,而不需要额外的按钮 假设我成功导入了.models、.forms、url.py等的所有内容 models.py中的代码 class data(models.Model): Datas = models.FileField(upload_to='datas/upload') class form1(forms.ModelForm): class Meta: model = data
class data(models.Model):
Datas = models.FileField(upload_to='datas/upload')
class form1(forms.ModelForm):
class Meta:
model = data
fields = ('Datas',)
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')
<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>
表单中的代码.py:
class data(models.Model):
Datas = models.FileField(upload_to='datas/upload')
class form1(forms.ModelForm):
class Meta:
model = data
fields = ('Datas',)
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')
<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>
视图中的代码.py:
class data(models.Model):
Datas = models.FileField(upload_to='datas/upload')
class form1(forms.ModelForm):
class Meta:
model = data
fields = ('Datas',)
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')
<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>
upload.html中的代码:
class data(models.Model):
Datas = models.FileField(upload_to='datas/upload')
class form1(forms.ModelForm):
class Meta:
model = data
fields = ('Datas',)
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')
<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>
数据
{%csrf_令牌%}
{{newform1.as_p}}
如果可能的话,有谁能指导我并给出一个解决方案?谢谢。为此,您不需要在后端更改任何内容,只需要一个javascript片段来触发文件字段按钮的“更改时提交表单”事件。 假设您的输入文件字段具有id=“id\u file”和form 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>
解释:
请参阅,当您的html中有一个表单时,表单角色是收集其中输入元素的数据,并包装这些数据,并在定义的操作上采用表单中定义的必要方法,即“GET”、“POST”等,该操作类似于“/upload\u file”
现在,默认情况下,只有当用户单击表单中包含类型为submit的button元素时,表单才会执行此操作。由于您不希望用户必须单击此行为,因此您也可以通过javascript执行此操作,如果您使用上面定义的html,那么为了测试此行为,您可以在文件上载选项中选择文件,然后转到开发人员控制台并运行
这个
当您单击按钮时,也会看到相同的行为。因此,我们在change
事件上执行此操作,以便在用户选择文件时自动提交表单
希望这有帮助,如果没有那么让我知道哪一部分 对不起,我还是不太明白。。。你介意更深入地解释一下吗?添加了一些解释,我希望你使用的是jquery。对不起,最后一个问题。文件上传到哪里?媒体文件夹中应该有一个文件夹,这是通过上传到class='datas/upload'控制的。哦,好的,我明白你的意思了。非常感谢。