我在Python中使用Flask,我正在尝试在我托管的服务器上详细说明发布请求(atm on localhost,因为我仍然试图让它工作)。
发布消息的方式如下:
payload = {'k' : '123' }
r = requests.post ('http://localhost', payload)
然后我得到的结果是
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>
同时,如果我尝试将相同的请求发送到地址localhost / post,如下所示
r2 = requests.post ('http://localhost/post', data)
结果变为
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
我用来创建服务器的代码如下:
from flask import Flask, jsonify, Request
from flask.templating import render_template
from flask.globals import request
app = Flask(__name__)
@app.route('/', methods = ['GET', 'POST'])
def index ():
return render_template('indexServer.html')
@app.route('/post', methods =['GET', 'POST'])
def post():
return render_template('response.html')
if __name__ == '__main__':
app.run(host = 'localhost', port = 80, debug = True)
现在,虽然索引函数中的GET方法有效,但当我尝试获取'/ post'页面时却不行。我想这背后的原因也是一样的,当我试图发布时,我得到404以上。
我想知道为什么会这样,因为我无法弄清楚发生了什么以及我做错了什么。如果还不是很明显,我刚刚开始使用Flask进行Python工作,所以它可能是任何东西。
感谢您的关注。
答案 0 :(得分:1)
你的代码看起来很好 - 看起来像你的Flask应用程序实际上没有像你期望的那样在端口80上侦听。
这可能有很多原因 - 也许现有的流程已经在使用端口80
,因此您的烧瓶应用程序无法绑定到它。或者在许多操作系统中,您需要将进程作为root
运行,以绑定到小于1024
的端口。我建议您将绑定端口更改为8088
:
if __name__ == '__main__':
app.run(host = 'localhost', port = 8088, debug = True)
然后再次尝试您的请求:
r2 = requests.post ('http://localhost:8088/post', data)