Python HTTP服务器对POST和GET请求没有响应

Python HTTP服务器对POST和GET请求没有响应,python,http,Python,Http,我需要创建一个HTTP服务器,用HTML页面处理Get和Post请求。 我希望在Post请求中将姓名和姓氏发送到服务器,然后在屏幕上显示Get请求。 我创建了一个HTML页面,并创建了一个HTTP服务器。 然而,我不知道如何让一切联系起来。我不断地犯错误。 我当前收到的错误: 错误代码:501 消息:不支持的方法('POST') 错误代码解释:HTTPStatus.NOT_IMPLEMENTED-服务器不支持此操作 问题似乎是服务器不支持Post请求,但我不确定如何使其支持该请求 import

我需要创建一个HTTP服务器,用HTML页面处理Get和Post请求。 我希望在Post请求中将姓名和姓氏发送到服务器,然后在屏幕上显示Get请求。 我创建了一个HTML页面,并创建了一个HTTP服务器。 然而,我不知道如何让一切联系起来。我不断地犯错误。 我当前收到的错误: 错误代码:501

消息:不支持的方法('POST')

错误代码解释:HTTPStatus.NOT_IMPLEMENTED-服务器不支持此操作

问题似乎是服务器不支持Post请求,但我不确定如何使其支持该请求

import http.server
import socketserver

PORT = 8080
Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

您必须使用方法
do\u POST

import http.server
import socketserver

class MyHandler(http.server.BaseHTTPRequestHandler):

    def do_POST(self):
        print("POST received")

        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()
        self.wfile.write("Hello World".encode('utf-8'))


PORT = 8080
Handler = MyHandler#http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()
我试了一下

import requests

r = requests.post('http://localhost:8080')
print(r.text)
我不知道如何获取POST请求中发送的值-我从来没有使用过它

用、、等做这件事比较容易


编辑:与相同。它还显示了如何获取发送的值并在响应中使用

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        print(request.form['name'], request.form['last_name'])
        return "Hello " + request.form['last_name']
    return "Hello World"

app.run(port=8080)
测试

import requests

form = {'name': 'James', 'last_name': 'Bond'}

r = requests.post('http://localhost:8080', data=form)

print(r.text) # Hello Bond

您必须使用方法
do\u POST

import http.server
import socketserver

class MyHandler(http.server.BaseHTTPRequestHandler):

    def do_POST(self):
        print("POST received")

        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()
        self.wfile.write("Hello World".encode('utf-8'))


PORT = 8080
Handler = MyHandler#http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()
我试了一下

import requests

r = requests.post('http://localhost:8080')
print(r.text)
我不知道如何获取POST请求中发送的值-我从来没有使用过它

用、、等做这件事比较容易


编辑:与相同。它还显示了如何获取发送的值并在响应中使用

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        print(request.form['name'], request.form['last_name'])
        return "Hello " + request.form['last_name']
    return "Hello World"

app.run(port=8080)
测试

import requests

form = {'name': 'James', 'last_name': 'Bond'}

r = requests.post('http://localhost:8080', data=form)

print(r.text) # Hello Bond

使用框架
Flask
Django
Flask
或类似工具创建网页。这将更容易。此代码不支持
POST
,因为每个
POST
都可以发送不同的数据,服务器不知道如何处理这些数据。您必须使用方法
post
编写自己的类
Handler
。它应该在文档中。使用framework
Flask
Django
Flask
或类似工具创建网页。这将更容易。此代码不支持
POST
,因为每个
POST
都可以发送不同的数据,服务器不知道如何处理这些数据。您必须使用方法
post
编写自己的类
Handler
。它应该在文档中。