Python 使用request.args是否奇怪?

Python 使用request.args是否奇怪?,python,forms,flask,request,Python,Forms,Flask,Request,将Ip提交到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 d

将Ip提交到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']时,测试返回“浏览器(或代理)发送了此服务器无法理解的请求”,使用request.args.get('Ip')解决了此错误,但不知道原因,因为request.args['Ip']仍然可以获取数据。

这篇文章指出:

Flask在args和表单字典中找不到键时会引发HTTP错误。Flask默认假设的是,如果您请求的是一个特定的密钥,但它不在那里,那么请求中会遗漏一些内容,整个请求无效

您不能使用
request.args['Ip']
,因为Flask使用来自werkzeug的自定义字典实现,名为。它有自己的获取方法