Flask框架
一、web前端与后端(python web)
1.web前端:网页,包含html,css,js。
静态网页:不能与服务器交互的网页
动态网页:能够与服务器交互的网页
2.web后端:、flask,django、ajax技术
二、服务器
1.服务器:为用户提供服务的计算机,将数据抽象成url,以供用户访问。
2.组成:
- 硬件:主机
- 软件:能够处理用户请求的程序:apache、tomcat、iis (internet information service)、nginx
3.作用:
- 存储web相关的数据
- 处理请求和响应
- 具备安全性
三、框架
框架:为了解决一些开放性问题,重复性问题而产生的程序结构
框架模式:
mvc
- m:模型层model,与数据库打交道
- v:视图层view
- c:控制层controller,处理请求与响应
mtv(flask)
- m:模型层model
- t:template模板(html模板),
- v:view视图层,处理请求与响应
四、flask使用
1.flask是一个基于python并依赖于jinja2模板引擎和werkzeug wsgi服务的框架。
wsgi:web server gateway interface.web服务网关接口,提供处理网络请求相关的功能
路由:为了匹配用户的请求地址,会自动执行视图函数,视图函数中必须有返回值,返回字符串显示到相应的页面中。
1、定义路由及视图函数
@app.route('/地址')
def funcname():
return "" #响应到页面中的内容
# 视图函数 @app.route("/") def index(): # 匹配到路径后执行的视图函数 return "<h1>欢迎</h1>"
2、定义带参数的路由
变量:<变量名>
@app.route("/login/<name>/<age>")
def login(name,age):
return "%s,%s" % (name,age)
注意:路径中的参数变量永远是字符串类型
@app.route('/login/<name>/<age>') def login(name, age): return "<h1>欢迎登录,%s,%s</h1>" % (name, age)
3、类型转换器
缺省 字符串,不能包含'/'
int: 转换整数
float: 转换小数
path: 字符串,允许包含'/'
使用:
@app.route('/show/<int:num>')
@app.route('/calcute/<int:n1>/<int:n2>') def calcute(n1,n2): # n1 = int(n1) # n2 = int(n2) n3 = n1 + n2 return "%d + %d = %d" %(n1,n2,n3)
4、多个url执行同一个视图函数
@app.route('/')
@app.route('/index')
def index():
return "首页"
@app.route('/show') @app.route('/show/list') @app.route('/show/<name>') def show(name="ze"): return "show %s" % name
注意:
如果在app.run()设置host="0.0.0.0";不影响当前虚拟ip(127.0.0.1);可以让当前局域网中其他的计算机,通过内网ip访问服务器
5、模板
1、模板是一种特殊的html文件,python+html网页结构,允许在模板文件中使用变量
2、导入render_template
3、项目中创建“templates”文件夹,存放模板文件
视图函数中定义变量 name=""、age=、dic=、tub、list 将数据传递到模板文件中显示
def show():
name="xb"
return render_remplate("",uname=name)
模板文件中使用 {{ uname }}
# 模板 @app.route('/info') def info(): # 返回模板文件,可以传递变量 return render_template("01-show.html", name="flask", age=20)
01-show.html
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> 模板文件 <h1>{{ name }}</h1> <h1>{{ age }}</h1> </body> </html>
最后把代码汇总一下
from flask import flask, render_template app = flask(__name__) # 创建flask的程序实例 # 视图函数 @app.route("/") def index(): # 匹配到路径后执行的视图函数 return "<h1>欢迎</h1>" @app.route('/login/<name>/<age>') def login(name, age): return "<h1>欢迎登录,%s,%s</h1>" % (name, age) @app.route('/calcute/<int:n1>/<int:n2>') def calcute(n1,n2): # n1 = int(n1) # n2 = int(n2) n3 = n1 + n2 return "%d + %d = %d" %(n1,n2,n3) @app.route('/show') @app.route('/show/list') @app.route('/show/<name>') def show(name="ze"): return "show %s" % name # 模板 @app.route('/info') def info(): # 返回模板文件,可以传递变量 return render_template("01-show.html", name="flask", age=20) if __name__ == "__main__": app.run(debug=true)
上一篇: 稀饭如何做最好吃