python flask基本操作

html的for循环

基本的方法都实现了,我们现在来增加难度

比如说往网页中扔一个列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from flask import Flask,render_template
# 创建web应用程序
app = Flask(__name__)

# 写一个函数来处理浏览器发送过来的请求
# 路由,你通过浏览器访问过来的请求到底交给谁来处理
@app.route("/") # 当访问到127.0.0.2:5000/ 其实这个"/"就是根目录
def index():
s = " Hello World!"
lst = ["苹果","三星","华为","小米"]
return render_template("hello.html",jay=s,lst=lst) # 此时会自动找templates文件夹里面的hello.html

if __name__ == "__main__":
app.run()

其实就是再加一个变量就好了,但是,这样没有意思,我想要的是把列表里面的内容逐个输出,这样的话就要用到for循环,但是html里面能用for循环吗

这样就好了,其实就是python里面的for循环,第一行和第三行一定要注意这个在html里面的特殊的写法,然后第二行写需要循环的内容

这样输出就不是一个列表了,而是每个值了,当然我们还可以在每次循环里面加点东西

实时更新修改的内容

这里还有补充一条就是我们之前发现每次修改了内容,都必须重启一下flask服务才能生效,那怎么才能实时更新呢,就是只要网页中按F5就可以刷新内容了

这样就好了

前端数据传给后端

我们再来学点东西,我们之前说的都是把后端的数据传给前端,那么我们怎么把前端的数据传给后端呢?比如说我们的登录界面,我们需要在前端输入用户名和密码,然后把用户名和密码发送给后端,然后让后端进行验证,这样我们该怎么办呢?

先写个login.html前端

里面就是个表单,action里的/login就是和后端连接的

然后写后端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/")
def index():

return render_template("login.html")
@app.route("/login",methods=['POST']) # 因为我们需要用post提交,但是下面的request提交表单时固定是get,所以这里要特地写一下用post方法提交
def login():
username = request.form.get("username")
password = request.form.get("pwd")
# url传参:request.args.get()
if username == "admin" and password == "admin":
return "成功"
else:
return render_template("login.html",msg="登陆失败")

if __name__ == "__main__":
app.run(debug=True)

注意需要导request包

先是用根目录返回login.html的前端界面,使得访问http://127.0.0.1:5000/就可以进入login.html的页面

然后我们再看login.html文件,里面form的action指向了/login,所以我们还要在后端写一个login()

然后意味着登录验证是通过login()来实现的

然后我们看login(),其实就是判断前端传回来的账号密码是否是admin,是的话返回前端一个“成功”,这个“成功”会单独展现在一个页面里。如果说账号或密码错误的话,就会返回登录失败的提示给msg,然后跳转回到login.html页面

我们在前端代码中也看到了,这就是后端传给前端,前端接收到的数据的存放位置

这里还需要注意的是login()函数,我们在前面写了methods=[‘POST’],因为账号密码肯定是隐藏提交的,所以要用POST提交,在下面的request.form.get为什么是get,好像是固定格式,就是form必须用get,所以我们在前面加上POST就可以用post来提交了。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!