我有一个需要收集一些文本数据和文件的表单。提交后,textFields很好,但是FileField似乎为空。
验证器FileRequired声称该字段为空,如果删除它,则确实为NoneType。
表单类:
$(document).ready(function (e) {
$("#del").on('submit',(function(e) {
e.preventDefault();
$.ajax({
url: "delete.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
beforeSend:function(){
return confirm("Are you sure you want to delete this?");
},
success: function(data)
{
alert("Delete Successful");
window.location.reload();
},
error: function(e)
{
}
});
}));
});
渲染类:
from wtforms import Form, StringField,validators,SubmitField,DateField
from wtforms.fields.html5 import DateField
from flask_wtf.file import FileField, FileRequired,FileAllowed
from flask_wtf import FlaskForm
from flask import flash
import baseDatos
class AnadirForm(FlaskForm):
id=StringField('id')
nombre=StringField('nombre',[validators.InputRequired()])
volumen=StringField('volumen',[validators.InputRequired()])
fecha= DateField('fecha',[validators.InputRequired()])
file = FileField('Introduce Gcode',validators=[FileRequired()])
submit = SubmitField('Post')
HTML:
@app.route("/",methods=['GET', 'POST'])
def main():
primeraForm=AnadirForm(request.form)
if(primeraForm.validate_on_submit()):
print(primeraForm.file.data)
我无法访问文件数据(以后必须存储,但是要设法获取文件之后)
答案 0 :(得分:0)
尝试:
form = AnadirForm(request.POST or None, request.FILES or None)
或:
if request.method == 'POST':
file = request.files['file_name']
答案 1 :(得分:0)
我有同样的问题。对我有用的是将FileField()
替换为MultipleFileField()
,然后调整数据处理,因为您得到的是文件列表,而不仅仅是文件。
我不知道这个错误是从哪里来的,这对我来说似乎很奇怪,因为FileField在另一种情况下为我工作,尽管没有真正的区别。
答案 2 :(得分:0)
尝试一次此代码:
SomeProp