先说一下接收方法,再说一下其中的大大大大大坑
1.get请求
前端代码:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<form action="http://127.0.0.1:5000/test1" method="get">
姓名:<input type="text" name="name" value="caosong">
年龄:<input type="text" name="age" value=24>
<input type="submit" value="提交">
</form>
</body>
</html>
后台代码:
@app.route('/test1/',methods=["GET","POST"])
def test1():
print("name:")
print(request.args.get("name"))
print("all:")
print(json.dumps(request.args))
return json.dumps(request.args)
2.post请求
前端代码:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<form action="http://127.0.0.1:5000/test1" method="post">
姓名:<input type="text" name="name" value="caosong">
年龄:<input type="text" name="age" value=24>
<input type="submit" value="提交">
</form>
</body>
</html>
后台代码:
@app.route('/test1',methods=["GET","POST"])
def test1():
print("name:")
print(request.form.get('name'))
print(""nameList:)
print(request.form.getlist('name'))
print("age:")
print(request.form.get('age', default='-1'))
return json.dumps(request.form)
3.最重要的大坑来了
细心的同学可能会发现上述代码的细微差别,那就是下面的不同。
没有错,这个就是坑了我好久的问题,左侧的是get请求,右侧是post请求。一个url是'/test1/',一个url是'/test1'。
经过反复实验发现,get请求会在你的表单的action后面加上 /?等等 (无论有没有参数),这也就造成了将后端的get改成post怎么改都不好使的重要原因。
希望对小伙伴们有帮助。当然能赞更好了。
4.建议
建议把所有的URL都定义为"/xxxxx/"这样的形式,无论post,get就都ok了。
注意:是前后端都这么写