Veröffentlichung von Daten auf den Kolben via Formular gibt 400 Bad Request
Ich bin versucht, post-Daten, die über meine front-end-und die Kolben-app ist mit 400 bad request. Jedoch Wenn ich das gleiche tun mit den Curl-Aufruf es scheint gut zu funktionieren. Ich weiß nicht, was ich bin fehlt in der form.
Folgende ist mein form-code
<script>
function sub() {
console.log('sub function');
$("#fquery").submit();
}
</script>
<form id="form1" action="/final" method="post">
<input id='query' type="text">
<button type="submit" onClick='sub()'>Submit »</button>
</form>
Auf server-Seite:
@app.route('/final',methods=['POST','GET'])
def message():
if request.method == 'POST':
app.logger.debug(" entered message function"+ request.form['query'])
q = request.form['query']
return render_template('final.html',query=q,result="Core_Table Output")
Server-Seite scheint in Ordnung zu mir. Da erhalte ich die Antwort für curl-Anfrage
curl http://localhost:8000/final -d "query=select starct st blah blah" -X POST -v
* Trying 127.0.0.1... connected
> POST /gc HTTP/1.1
> User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: localhost:8000
> Accept: */*
> Content-Length: 41
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 41out of 41 bytes
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 1961
< Server: Werkzeug/0.9.4 Python/2.7.3
< Date: Thu, 24 Oct 2013 23:33:12 GMT
- Was ist
#fquery
? Ich sehe nur#form1
und#query
in Ihr code-snippet ein. - sorry habe vergessen das zu ändern. Seine form1 nur.
- möglich, Duplikat der Was ist die Ursache für den Bad Request Fehler beim Absenden in Flask-Anwendung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ah, ich glaube, ich sehe es: Sie stellen nur die
id
aber nicht diename
für dieinput
element. Doch diename
wird in form von Daten, die an den server gesendet wird. Dies bewirkt, dass einKeyError
beirequest.form['query']
die Ursachen der 400-Fehler.Außer dem, was @Robin Krahl sagte, Sie sollten auch hinzufügen
enctype="multipart/form-data"
in Ihrer form. Also der code vielleicht so: