一:flask初始化步骤:
-
创建flask项目
-
导入flask文件
-
创建一个Flask类,传入name参数
-
使用run实例启动web服务
-
使用@app.route装饰器将路由映射到视图函数进行路由解析
-
编写主要执行的程序文件或者函数
#因为后期会用到模板还有request命令,所以在这里就全部写上了,render_template是渲染模板 #注意:一定要开启debug模式,这样可以很清晰的查找错误 from flask import Flask,render_template #导入Flask框架 app = Flask(__name__) #路由解析,通过用户访问的路径,匹配相应的函数,‘/’代表着当前路径,也就是下面的函数 @app.route('/index') def hello_world(): return 'Hello World!' #进行服务器启动 if __name__ == '__main__': app.run()
二:路由解析格式:
注意:使用pycharm中的flask模板就相当于是开启了一个本地服务器,这个同java中Servlet连接tomcat服务器是类似的效果,在语法使用上面可以参考一下vue模板
-
flask默认网址是本地,也就是
http://127.0.0.1:5000
-
默认当前路径调用函数执行网页:
@app.route("/")
,也就是上面的本地IP@app.route("/") def hello (): return "你好"
-
带着参数,在本地IP下其他路径所得到的网页:
#这里的路径test随便写就好,但是后面的name就是需要传入的参数,必须用尖括号来包括name变量 @app.route("/test/<name>") @app.route("/test/<int:id>")#限制传入参数的格式 #上面传递了参数,那么下面就一定要接受一个参数 def hel(name): return "hello :%s"%name
-
返回用户渲染后的网页文件,render_template
1.首先,创建创建一个h5文件,放置路径必须得在template当中,否则不会返回渲染文件 from flask import render_template @app.route("/")#因为还是在这个项目中,调用下面的函数,暂时不需要改变路径 def index(): #注意:下面必须用渲染器包含网页文件名 return render_template("index.html")
-
h5与python在falsk模板上面交互相应实现动态界面:
'''前言: 1.向页面传递一个参数: time=datatime.data.today()获取当前时间 #这里的var在h5中会有原型 return render_template("index.html",var=time) 2.向页面传递一个列表类型: name=["小张","小王","小赵"] return render_template("index.html",list=name) 3.向页面传递一个元组类型: task={"task":"wash room","time":"Three hours"} return render_template("index.html",task=task) '''
在html的内容
<!--在h5上面交互伪代码:--> <body> <!--使用双大括号来表示传递进去的参数--> 今天是{{var}}<br/> <!--用大括号和百分号括起来是控制结构,用来操作列表或者元组--> <!--里面内容同python语言最大的区别就是有一个end结束标识,常见的有for,if--> {%for data in list %} <li>{{data}}</li> {%endfor%}<!--表示结束--> </br> <table border="1"> <!--当传递的是元组的时候,需要使用迭代器--> {%for key,value in task.items()%}<!--注意:这里items是个函数,所以需要加括号--> <tr> <th>{{key}}</th> <td>{{value}}</td> </tr> {%endfor%} </table> </body>
-
表单提交:web交互
#首先,需要两个h5界面:一个用来给用户操作的界面,一个是服务器返回给网页的信息界面: @app.route('/register') def register(): return render_template("register.html") @app.route('/result',methods=['POST','GET'])#这里必须写名method是什么 def result(): if request.method=='POST': result=request.form#这里就是 return render_template("result.html",result=result)#传递表单
<!--h5界面:注意,既然要提交,那么就会有post和get提交,而且提交表达的网址必须是服务器接收信息并返回相应的地址--> <!--register.html--> <!--这里的响应地址必须是服务器相应的html地址--> http://localhost:5000/result=={{url_for('result')}} <form action="{{url_for('result')}}",method="post"> <p>姓名:<input type="text" name="name"></p> <p>年龄:<input type="text" name="age"></p> <p>性别:<input type="text" name="gender"></p> <p>地址:<input type="text" name="address"></p> <p><input type="submit",value="提交"></p> </form> <!--result.html--> <body> <table border="1"> {%for key,value in result.items()%} <tr> <th>{{key}}</th> <td>{{value}}</td> </tr> {%endfor%} </table> </body>
注意:
-
注意: