Python Web 框架-FLASK day01

本文介绍了Python的轻量级Web框架Flask,包括静态网页与动态网页的区别、Web与服务器的关系、框架概念以及Flask的特点和实现。Flask基于Jinja2模板引擎和Werkzeug WSGI服务,采用MTV模式,支持路由定义和参数处理,同时讲解了如何设置和渲染模板。

目录

1.静态网页 与 动态网页

2.WEB 与 服务器

3.框架

4.Flask 框架

5.Flask实现

6.Flask - 路由(route)

7.模板 - Templates


Flask 轻量级 WEB 框架

AJAX 阿贾克斯,在web中主要完成,异步的请求和响应

Django 重量级 WEB 框架

 

1.静态网页 与 动态网页

  1. 静态网页:无法与服务器进行交互的网页
  2. 动态网页:能够与服务器进行交互的网页

2.WEB 与 服务器

  1. WEB:网页(HTML,CSS,JS)
  2. 服务器
    能够给用户提供服务的机器就是服务器
    1. 硬件与软件
        硬件范畴:一台主机
        软件范畴:一个能够接收用户请求并给出响应的程序
        1.APACHE
        2.TOMCAT
        3.IIS(Internet Information Service)
        4.Nginx
        ... ...
    2. 作用
      1. 存储WEB所需要的信息
      2. 能够处理用户的请求(request)并给出响应(response)
      3. 能够执行服务器端程序
      4. 具备一定的安全功能

3.框架

  1. 什么是框架
    框架是一个为了解决开放性问题而存在的一种结构。框架本身也提供了一些最基本的功能。我们只需要在基础功能上搭建属于自己的操作即可
  2. Python Web 框架
    1. flask
    2. django
    3. tornado
    4. webpy
      ... ...

      web 重点,请求,响应,数据

4.Flask 框架

  1. 什么是Flask
    Flask是一个基于Python并且依赖于Jinja2模块引擎和Werkzeug WSGI 服务的一个微型框架
    WSGI:Web Server Gateway Interface(WEB服务网关接口)
  2. Flask 的框架模式 - MTV
    M:Models,模型层,负责数据库建模
    T:Templates,模板层,用于处理用户显示的内容,如:html
    V:Views,视图层,处理与用户交互的部分内容,处理用户的请求并给出响应

    经典三层结构:MVC
    M:Models,模层型,负责数据库建模
    V:Views,视图层,用于处理用户显示的部分内容如:html
    C:Controller,控制器,处理与用户交互的部分内容,处理用户的请求与响应

5.Flask实现

  1. 安装flask
    sudo pip3 install flask

    查看已安装的flask版本,在python的交互模式中
    import flask
    flask.__version__

    flask官网:http://flask.pocoo.org/
  2. 初始化
    from flask import Flask
    
    # 将当前运行得到主程序构建成Flask的应用,以便接收用户的请求(request),并给出响应(response)
    app = Flask(__name__)
    
    #@app.route() Flask中的路由定义,定义用户的访问路径, / 表示的是整个网站的根路径
    #def index(),表示匹配上@app.route()路径后的处理程序-视图函数,该类函数必须要有return,return后要给一个字符串 或 响应对象
    @app.route('/')
    def index():
        return "<h1>this is my first flask app</h1>"
    
    if __name__ == '__main__':
        # 运行Flask应用(启动Flask的服务),默认在本机开启的端口号是5000,debug=True,是将当前的启动模式改为调试模式(开发环境中推荐使用调试模式,生产环境中不允许使用)
        app.run(debug=True)


    访问路径:http://localhost:5000/login:显示‘登录页面’
    访问路径:http://localhost:5000/register:显示‘注册页面’
    详情见下面示例 ↓

6.Flask - 路由(route)

  1. 什么是路由
    客户端将请求发送给web服务器,web服务器再将请求发送给flask程序实例
    程序实例需要知道每个url请求要运行哪些代码,所以需要建立一个url 到 python 函数的映射,处理url和函数之间的关系的程序就是 路由
    在Flask中,路由是通过 @app.route 装饰器来表示的
  2. 路由的体现
    1. 路由的基本表示
      @app.route('/')
      def index():
          return 'xxx'

      @app.route('/login')
      def login():
          return 'xxx'
    2. 带参数的路由
      http://localhost:5000/show/sf.zh
      http://localhost:5000/show/wuji.zh
      http://localhost:5000?show/zhouzhiruo
      1. 基本带参路由
        @app.route('/show/<name>')
        def show1(name):
            在函数中 name 表示的就是地址栏上传递过来的数据
            return 'xxx'
      2. 带多个参数路由
        localhost:5000?show2/sf.zh/85
        localhost:5000?show2/wj.zh/18
        localhost:5000?show2/ss.yin/30

        @app.route('/show2/<name>/<age>')
        def show2(name,age):
            return 'xxx'
      3. 指定参数类型的路由
        @app.route('/show3/<name>/<int:age>')
        def show3(name,age):
            return:'xxx'

        <int:age>:表示age参数时一个整型的数值而并非默认的字符串
          int:类型转换器
        Flask 中所支持的类型转换器:
        类型转换器作用
        缺省字符串型,但不能有/(斜杠)
        int:整型
        float:浮点型
        path:字符串型,可以有/(斜杠)

         

    3. 多URL 的路由匹配
      允许在一个视图处理函数中设置多个url路由器则
      @app.route('/')
      @app.route('/index')
      def index():
          return 'xxx'
    4. 路由中设置 HTTP 请求方法
      Flask路由规则也允许设置对应的请求方法,只有将匹配上请求方法的路径交给视图处理函数去执行

      @app.route('/post',methods=['POST'])
      def post():
          return 'xxx'
      说明:只有post请求方式允许访问, localhost:5000/post
    5. URL的反向解析
      正向解析:程序自动解析,根据@app.route()中的访问路径来匹配处理函数

      反向解析:通过视图处理函数的名称自动生成视图处理函数的访问路径

      Flask 中提供了 url_for() 函数,用于反向解析 url
        第一个参数:指向函数名(通过@app.route()修饰函数)
        后续的参数们:对应要构建的url上的变量

      ex:
      @app.route('/')
      def index():
          return 'Index'

      @app.route('/show/<name>')
      def show(name):
          return 'name:%s' %name

      1.url_for('index') : 结果为:/
      2.url_for('show',name='zsf') : 结果为:./show/zsf/

      特殊:
      url_for('static',filename='style.css')
      静态文件反向解析,后续使用,讲解
      from flask import Flask, url_for
      
      app = Flask(__name__)
      
      # @app.route('/')
      # def index():
      #     return '这是首页'
      
      @app.route('/login')
      def login():
          return '这是登录页面'
      
      @app.route('/register')
      def register():
          return '这是注册页面'
      
      # 定义带一个参数的路由
      @app.route('/show1/<name>')
      def show1(name):
          return "<h1>姓名为:%s</h1>" % name
      
      # 定义带两个参数的路由
      @app.route('/show2/<name>/<age>')
      def show2(name,age):
          return "<h1>姓名为:%s,年龄为:%s" % (name,age)
      
      # 定义带两个参数的路由,其中,age参数指定为整数
      @app.route('/show3/<name>/<int:age>')
      def show3(name,age):
          # age : 为 整型,并非 字符串
          return "传递进来的参数是name:%s,age:%d" % (name,age)
      
      
      # 多 URL 路由匹配
      @app.route('/')
      @app.route('/index')
      @app.route('/<int:page>')
      @app.route('/index/<int:page>')
      def index(page=None):
          if page is None:
              page = 1
          return "当前页数为:%d" % page
      
      
      @app.route('/post',methods=['POST','GET'])
      def post():
          return '这是post请求方式进来的'
      
      
      @app.route('/url')
      def url_views():
          # 将 login() 反向解析访问地址
          # logUrl = url_for('login')
          # print(logUrl)
          #
          # resp = "<a href='"+logUrl+"'>我要登录</a>"
          # return resp
      
          # 将 show2(name,age) 反向解析访问地址
          url = url_for('show2',name='sf.zh',age=85)
          print(url)
          resp = "<a href='"+url+"'>"+url+"</a>"
          return resp
      
      if __name__ == "__main__":
          app.run(debug=True)

       

7.模板 - Templates

  1. 什么是模板
    模板是一个包含响应文本的文件(通常是html文件),该文件中允许包含‘占位变量’来表示动态的内容,其具体值在请求中才能知道,‘占位变量’最终会被真实的值所替换。
    模板最终也会被解析成响应的字符串,这一过程被称为‘渲染’

    Flask实际上是使用Jinja2 强大的模板引擎
  2. 模板的设置
    默认的情况下,Flask会在程序文件夹中的templates 子文件夹寻找模板
    需要手动创建 templates 文件夹
  3. 渲染模板
    在 视图函数中,通过
    return render_template() 将模板渲染成字符串再响应给客户端

    render_template() 语法:
      render_template('xxx.html',arg1=value1,arg2=value2)
      参数1:xxx.html,要渲染给客户端的html模板文件,
      参数 ~n:要传递给模板动态显示的变量占位符,如果没有动态的变量占位符,则可以省略

      返回值:字符串
    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        str = render_template('index.html')
        print(str)
        return str
    
    if __name__ == '__main__':
        app.run(debug=True,port=5555)

    随便一个html文件
     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>中国</title>
        <style>
            .container{
                width:90%;
                margin:0 auto;
            }
    
            .container .title{
                background-color:#f60;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="title">
                我的第一个模板
            </div>
            <div class="main">
                主要内容
            </div>
            <div>
                中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家,通用汉语、汉字,汉族与少数民族被统称为“中华民族”,又自称为炎黄子孙、龙的传人
            </div>
        </div>
    </body>
    </html>

     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

多角色体系 支持管理员、商家、消费者三种角色,权限分级管控: 管理员:负责平台整体配置、用户审核、数据监控等全局操作。 商家:管理店铺信息、发布商品、处理订单、回复评价等。 消费者:浏览商品、加入购物车、下单支付、评价商品等。 实现用户注册(手机号 / 邮箱验证)、登录(支持密码 / 验证码 / 第三方登录)、个人信息管理(头像、收货地址、密码修改)。 权限精细化控制 商家仅能管理自家店铺及商品,消费者仅能查看和购买商品,管理员拥有全平台数据访问权限。 二、商品管理功能 商品信息维护 商家可发布商品:填写名称、分类(如服饰、电子产品)、子类别(如手机、笔记本)、规格(尺寸、颜色、型号)、价格、库存、详情描述(图文)、物流信息(运费、发货地)等。 支持商品上下架、库存调整、信息编辑,系统自动记录商品状态变更日志。 商品分类与搜索 按多级分类展示商品(如 “数码产品→手机→智能手机”),支持自定义分类体系。 提供智能搜索功能:按关键词(名称、品牌)搜索,支持模糊匹配和搜索联想;结合用户浏览历史对搜索结果排序(优先展示高相关度商品)。 商品推荐 基于用户浏览、收藏、购买记录,推荐相似商品(如 “浏览过该商品的用户还买了…”)。 首页展示热门商品(销量 TOP10)、新品上架、限时折扣等推荐列表。 三、订单与交易管理 购物车与下单 消费者可将商品加入购物车,支持修改数量、选择规格、移除商品,系统自动计算总价(含运费、折扣)。 下单流程:确认收货地址→选择支付方式(在线支付、货到付款)→提交订单→系统生成唯一订单号。 订单处理流程 订单状态跟踪:待支付→已支付→商家发货→物流运输→消费者收货→订单完成,各状态变更实时通知用户。 商家端功能:查看新订单提醒、确认发货(填写物流单号)、处理退款申请(需审核理由)。 消费者端功能:查看订单详情、追踪物流、申请退款 / 退货、确认收货。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值