将post提交给post1.py
@main.route('/post1',methods=['GET','POST'])
@login_required
def post1():
Ip=request.form['Ip']
print Ip
return redirect(url_for('.post',Ip=Ip))
然后重定向到post.py
@main.route('/post', methods=['GET', 'POST'])
@login_required
def post():
#Ip=request.args['Ip']
form = RepairForm(request.form)
print request.form
if request.method == "POST":
repair = Repair(Ip=form.ip.data,Series=form.series.data,Hostname=form.hostname.data,
ManagerIp=form.managerip.data,Comp=form.comp.data,
Model=form.model.data,Location=form.location.data,Box=form.box.data,
Important=form.important.data,Faultype=form.faultype.data,
Subject=form.subject.data,Body=form.body.data,Classify=form.classify.data,
Status=form.status.data,auth_id=current_user._get_current_object().id,
Owner=current_user._get_current_object().username,)
db.session.add(repair)
db.session.commit()
flash('报修成功')
return redirect(url_for('.index'))
form.ip.data=1
print form.ip.data
form.hostname.data=1
print form.hostname.data
print request.form
form.managerip.data=1
form.comp.data=1
form.model.data=1
form.location.data=1
form.box.data=1
form.important.data=1
form.faultype.data=1
form.classify.data=1
form.status.data=1
return render_template('post.html',form=form)
所有测试都没问题,但是当我取消注释 Ip = request.args ['Ip'] 时,测试会返回'浏览器(或代理)发送请求这个服务器无法理解',
答案 0 :(得分:0)
使用request.args.get(&#39; Ip&#39;)解决了这个错误,但不知道原因,因为request.args [&#39; Ip&#39;]仍然可以获取数据。< / p>
答案 1 :(得分:0)
这篇文章指出Form sending error:
当无法在args中找到密钥并形成字典时,Flask会引发HTTP错误。 Flask默认假设的是,如果您要求特定密钥并且它不存在,那么请求中遗漏了一些内容,整个请求无效。
您无法使用request.args['Ip']
,因为Flask使用werkzeug中名为MultiDict的自定义词典实现。它有自己的get方法。