Django/Python控制:"if form.is_valid():“如果表单有输入类型button,则等
Django/Python control: "if form.is_valid ():" is equal to false if the form has an input type "button"
我不明白为什么如果我在我的html页面的形式:<input type="submit" class="btn btn-small btn-primary" id="execute"
value="Esegui"> '
则该表单有效,否则如果我输入a<input class="btn btn-small btn-primary" type="button" id="execute"
价值= " Esegui ">表格无效。问题是,如果我把"输入类型",那么提交就无法加载JSON的代码:
<script type="text/javascript">
$(document).ready(function () {
$("a # single_image").fancybox();
$("# execute").click(function () {
var execute = true
$("# execute").attr("value", "Run ...");
$("# single_image.") attr("href", "");
$("# image").attr("src", "");
$.ajax({
type: "POST",
url: "/ cloud / carica_immagine"
date: {
execute: execute
}
}).done(function (msg) {
$("# execute").attr("value", "Run");
$("# single_image.") attr("href", "graphs /" + msg["user_id"] + "/" + msg["graph"] + ."png");
$("# image").attr("src", "graphs /" + msg["user_id"] + "/" + msg["graph"] + ."png");
$("# single_image.") trigger("click");
});
});
})
</ script>.
这是我的视图,被html页面调用:
def list(request):
# Handle file upload
documents = Document.objects.all()
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
print newdoc.docfile
newdoc.save()
...
...
return render_to_response('processa_immagine.html', {'documents':documents, 'form': form, 'user_id':request.session['user_id'],'graph':graph}, RequestContext(request))
else:
form = DocumentForm() # A empty, unbound form
# Render list page with the documents and the form
return render_to_response('processa_immagine.html', {'documents':documents, 'form': form}, RequestContext(request))
这是我的表单:
class DocumentForm(forms.Form):
docfile = forms.FileField(
label='Seleziona un file',help_text='massimo 42 megabytes',
)
这是我的模型:
class Document(models.Model):
docfile = models.FileField(upload_to='documents')
my page HTML with form is:
<form method="post" id="myform" enctype="multipart/form-data">
<p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }} </p>
<p>{{ form.docfile }}</p>
<input class="btn btn-small btn-primary" type="button" id="execute" value="Esegui"><br/>
</form>
我希望有人能帮助我。
这段代码很混乱。您已经在单击事件触发的按钮上定义了一个Ajax函数。因此,当您单击按钮时,该函数被触发,并尝试提交表单。但是,它不能以使表单有效的方式这样做:表单中的唯一字段是必需的FileField,它不能通过标准的Ajax POST提交—即使可以,Ajax函数也不会尝试实际包含它。
input
版本似乎有效的原因是Javascript不阻止默认的提交操作,所以过程是这样的:Ajax运行,但甚至在它有机会收到响应之前,整个页面被提交,并刷新(有效)表单提交的结果。
相关文章:
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 如果消息框答案为YES,则用Javascript填写表单
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 如果用户没有更改,则表单值为空
- 如果选择单选按钮,则显示表单
- 如果ng单击附加到提交按钮,则表单未验证
- jQuery表单验证(如果==“执行此操作”)仅适用于第一次输入
- 表单提交没有'如果为空,则不会显示错误消息
- 如果表单中的空字段使用Javascript从URL中排除
- 如果从文件输入按钮调用 .ajaxSubmit() 时,它是必需的表单
- 如果选择了多个选项,则使用 jQuery 显示隐藏的表单元素
- 'Alajax' Jquery 简单表单提交.如果表单未经验证,如何防止提交
- 如果字段具有无效值,请禁用表单提交
- 如何登'如果验证未通过,则不提交表单
- 如果文本字段不为空,则自动将表单提交到url
- 表单在每个页面中 - 仅在特定页面上处理它 - 如果当前不在页面上 - 重定向 - 否则 - 使用 AJAX 更新数据
- 如果AngularJS中有可编辑的表行,那么表单元素放在哪里
- 如果选中,则禁用表单
- 捕获点击事件以弹出登录表单(如果用户未登录)
- 提交时打开灯箱.如果灯箱关闭,提交表单.如果链接被点击,不要提交