欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flask框架

程序员文章站 2023-01-01 14:05:46
一、Web前端与后端(Python Web) 1.Web前端:网页,包含HTML,CSS,JS。 静态网页:不能与服务器交互的网页 动态网页:能够与服务器交互的网页 2.Web后端:、Flask,Django、Ajax技术 二、服务器 1.服务器:为用户提供服务的计算机,将数据抽象成URL,以供用户 ......

一、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)