flask中request的get和post方法

一.request的get和post

1、get请求:

​ 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求
​ 传参:get请求传参是放在url中,并且是通过?的形式来指定key和value的

2、post请求:

​ 使用场景:如果要对服务器产生影响,那么使用post请求
​ 传参:post请求传参不是放在URL中,是通过form data 的形式发送给服务器的
get 请求是通过flask.request.args来获取
post 请求是通过flask.request.form来获取
post 请求在模板中要注意几点:
*input 标签中,要写name来表示这个value的key,方便后台获取
*在写form表单的时候,要指定method=‘post’,并且要指定action='/login/'

二.应用

功能:

​ 用post方法一个小的加法,从form表单将值读到python中,处理之后进行一个新的页 面展示结果

方法一:

原生的html表单获取:

method1.py

from flask import Flask,render_template,request
from flask_script import Manager

app = Flask(__name__)
app.config["SECRET_KEY"] = "SECRET_KEY"
manage = Manager(app)


@app.route("/")
def index():
    return "首页"


@app.route("/t_test/")
def t_test():
    return render_template("common/ComputeSum.html")

@app.route("/compute/",methods=["GET","POST"])
def computeSum():
    a = int(request.form.get("first"))
    b = int(request.form.get("secend"))
    return render_template("common/answer.html",answer=a+b)

if __name__ == "__main__":
    print("reload")
    manage.run()

index.html(可有可无)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1 align="center">测试首页!!!</h1>
</body>
</html>

ComputeSum.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计算两数之和!</title>
    <style>
        p{
            text-align: center;
        }
    </style>
</head>
<body>
<h1 align="center">计算两个数之和!</h1>
<hr>
    <form action="{{ url_for('computeSum') }}" method="post">
        <p>第一个数:<input type="text" name="first" placeholder="请输入第一个数"></p>
        <p>第二个数:<input type="text" name="secend" placeholder="请输入第二个数"></p>
        <p><input type="submit" value="提交"></p>
    </form>
</body>
</html>

answer.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>答案</title>
</head>
<body>
<hr>
<h2 align="center">答案是:{{ answer }}</h2>
<hr>
</body>
</html>

方法二:

用flaskform实现:

method2.py

from flask import Flask,render_template,request
from flask_script import Manager
from flask_wtf import FlaskForm
from wtforms import SubmitField,FloatField
from wtforms.validators import DataRequired,Length

app = Flask(__name__)
app.config["SECRET_KEY"] = "SECRET_KEY"
manage = Manager(app)


class Form(FlaskForm):
    aw = FloatField("第一个数",validators=[DataRequired("不能为空"),Length(min=1,max=5)])
    bw = FloatField("第二个数", validators=[DataRequired("不能为空"), Length(min=1, max=5)])
    submit = SubmitField("提交")

@app.route("/")
def index():
   return "首页"


@app.route("/t_test/")
def t_test():
   form = Form()
   return render_template("common/ComputeSum2.html",form=form)

@app.route("/compute/",methods=["GET","POST"])
def computeSum():
   a = int(request.form.get("aw"))
   b = int(request.form.get("bw"))
   return render_template("common/answer.html",answer=a+b)

if __name__ == "__main__":
   print("reload")
   manage.run()

ComputeSum2.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>第二种传递方式</title>
   <style>
       p{
           text-align: center;
       }
   </style>
</head>
<body>
<h2 align="center">计算和!!</h2>
<form action="{{ url_for("computeSum") }}" method="post">
   {{ form.crsf_token }}
       <p>{{ form.aw.label }}{{ form.aw() }}</p>
       <p>{{ form.bw.label }}{{ form.bw() }}</p>
       <p>{{ form.submit() }}</p>
</form>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容