Skip to main content
 首页 » 编程设计

python之Flask 和 POST/GET 的问题

2025年05月04日14luoye11

因此,我有以下 app.py 文件,我试图通过该文件处理一个发布请求,该请求实质上将读取名字、姓氏、用户名和密码,然后将其存储在 mongodb 中,但那是为了以后。截至目前,我在接收 post/get 请求时遇到问题。

当我尝试使用 postman 将数据提交到 localhost:5000/register 时,即使是我尝试运行的小片段也会给我一个错误的请求错误。

我们将不胜感激。

from flask import * 
#from pymongo import MongoClient 
#import json 
app = Flask(__name__) 
 
# main interface 
@app.route("/") 
def main(): 
    return render_template('index.html') 
 
# Register Interface 
@app.route('/register/', methods = ['GET']) 
def register(): 
    #collection = db['userdb'] 
    firstname = request.form['firstname'] 
    lastname = request.form['lastname'] 
    username = request.form['username'] 
    password = request.form['password'] 
    #postData = { 'firstname': firstname, 'lastname': lastname,'username':username,'password':password} 
    #json = json.dumps(postData) 
    #try: 
        #status = db.userdb.insert_one(postData).insert_id 
    #except: 
        #status = 'This user is already registerd' 
    return 'This data works' 
 
if __name__ == "__main__": 
    app.run() 

请您参考如下方法:

您确实需要将“POST”方法添加到路由装饰器,但您还需要一个步骤。使用 if 语句使 View 忽略 request.form 分配:

from flask import * 
#from pymongo import MongoClient 
#import json 
app = Flask(__name__) 
 
# main interface 
@app.route("/") 
def main(): 
    return 'go to <a href="/register/">register</a>' 
 
# Register Interface 
@app.route('/register/', methods = ['GET','POST']) 
def register(): 
    #collection = db['userdb'] 
    if request.method == 'POST': 
        firstname = request.form['firstname'] 
        lastname = request.form['lastname'] 
        username = request.form['username'] 
        password = request.form['password'] 
        #postData = { 'firstname': firstname, 'lastname': lastname,'username':username,'password':password} 
 
 
    return 'This data works' 
 
if __name__ == "__main__": 
    app.run(debug=True) 

这是同时使用 GET 和 POST 的 View 中的常见模式。另请注意,我已将 debug=True 添加为 app.run 的参数。这将使调试代码变得更加容易。