Flask入门和视图--01

news2024/9/22 19:39:44

1. 概述

  1. 虚拟环境搭建和使用

  2. Flask框架的特点,Flask框架的组成

  3. Flask框架中MVT模式开发

  4. 蓝图Blueprint的使用

  5. 路由Route的使用

  6. 请求Request和响应Response的使用

2. Flask简介

2.1 简介

Python后端的2个主流框架:
    Flask  轻量级框架
    Django  重型框架
    
Flask是一个基于Python实现的Web开发'微'框架 'MicroFramework'
官方文档: https://flask.palletsprojects.com/en/2.2.x/
中文文档: https://dormousehole.readthedocs.io/en/2.1.2/index.html
        
Flask是一个基于MVC设计模式的Web后端框架
MVC: 
    M Model 数据模型
    V View  界面
    C Controller  控制器
MTV 
    M: Models  模型(数据)
    T: Templates 模板(界面)
    V: Views 视图(控制器)
​
Flask依赖三个库
  Jinja2 模板引擎 {% %}  模板:静态html+模板语言{%  %}  
  Werkzeug  WSGI 工具集
  
流行的Flask
Flask流行的主要原因:
  1. 有非常齐全的官方文档,上手非常方便
  2. 有非常好的扩展机制和第三方扩展环境,工作中常见的软件都会有对应的扩展。自己动手实现扩展也很容易
  3. 社区活跃度非常高
  4. 微型框架的形式给了开发者更大的选择空间

2.2 框架

3. 创建虚拟环境

# 先打开cmd
​
# 安装virtualenv (windows操作系统)
pip install virtualenv virtualenvwrapper-win
​
# workon 查看虚拟环境
workon
​
# mkvirtualenv 创建新的虚拟环境
mkvirtualenv flask2env
​
# rmvirtualenv 删除虚拟环境
rmvirtualenv flask2env
​
# 进入虚拟环境
workon flask2env

4. 使用Flask

4.1 第一个Flask项目

4.11 创建项目

# 1.进入虚拟环境
    workon flask2env
​
# 2.在虚拟环境中安装flask2
    pip install flask==2.2.3
    
# 3.打开Pycharm专业版,创建Flask项目并配置好虚拟环境flask2env
​
# 4. 创建helloFlask.py文件,并写入以下代码:
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        return 'Hello Flask'
        
    if __name__ == '__main__':
        app.run()

4.12 run启动参数

run()启动的时候还可以添加参数:
    debug 是否开启调试模式,开启后修改过python代码会自动重启
    port 启动指定服务器的端口号,默认是5000
    host 主机,默认是127.0.0.1,指定为0.0.0.0代表本机所有ip

4.2 模板渲染

static 静态资源文件
templates 模板文件
​
模板渲染
  render_template()​
  其实也是分为两个过程,加载和渲染
    template = Template(“<h2>呵呵</h2>”)
    template.render()
​
静态使用,相当于反向解析
  url_for('static',filename='hello.css')

4.3项目拆分

4.31 app.py

代码全都写在app.py一个文件中是不现实的, 我们可以对项目进行简单的拆分

from App import create_app
​
# 创建app
app = create_app()
​
if __name__ == '__main__':    
    app.run(debug=True)

4.32 App_init 

新建目录App, 并在App的init文件中创建app对象

from flask import Flask
​
# 创建app
def create_app():
    app = Flask(__name__)       
    return app

4.33 蓝图blueprint

1. 宏伟蓝图(宏观规划)
2. 蓝图也是一种规划,主要用来规划urls(路由route)
3. 蓝图基本使用    
 3.1 在views.py中初始化蓝图
    blue = Blueprint('user', __name__)
   
 3.2 在init文件中调用蓝图进行路由注册
   app.register_blueprint(blueprint=blue)

4.4 route路由

4.41路由参数

路由:
   将从客户端发送过来的请求分发到指定函数上

路由通过装饰器对应视图函数,并且可以接收参数,所以我们只需要在视图函数上使用装饰器即可
​
语法
  @app.route('/rule/')
  def hello():
      return 'Hello World!'
      
  @app.route('/rule/<id>/')
  def hello(id):
      return 'Hello %s' % id
​
写法
    <converter:variable_name>
    converter: 参数类型
      string   接收任何没有斜杠('/')的文件(默认)
      int   接收整型
      float 接收浮点型
      path  接收路径,可接收斜线('/')
      uuid  只接受uuid字符串,唯一码,一种生成规则
      any   可以同时指定多种路径,进行限定
        
请求方法
    默认支持GET,HEAD,OPTIONS, 如果想支持某一请求方式,需要自己手动指定
    @app.route('/rule/', methods=['GET','POST'])
    def hello():
        return 'LOL'
    
  methods中可以指定请求方法
    GET
    POST
    HEAD 
    PUT
    DELETE

4.42 http状态码

http状态码(转至另一篇博客,便供大家学习参考..)

4.5 请求和响应

4.51 Request

服务器在接收到客户端的请求后,会自动创建Request对象
由Flask框架创建,Request对象不可修改

属性
  url  完整请求地址
  base_url  去掉GET参数的URL
  host_url  只有主机和端口号的URL
  path  路由中的路径
  method  请求方法
  remote_addr  请求的客户端地址  
  args  GET请求参数 
  form  POST请求参数 
  files  文件上传
  headers  请求头
  cookies  请求中的cookie 
    
ImmutableMultiDict类型: 
    类似字典的数据结构, 与字典的区别,可以存在相同的键  
        args和form都是ImmutableMultiDict的对象
        ImmutableMultiDict中数据获取方式:
            dict['uname']   或  dict.get('uname')
    获取指定key对应的所有值:
            dict.getlist('uname')
                             
1. args
   - get请求参数的包装,args是一个ImmutableMultiDict对象,类字典结构对象
   - 数据存储也是key-value
   - 外层是列表,列表中的元素是元组,元组中左边是key,右边是value
2. form
   - 存储结构跟args一致
   - 默认是接收post参数
   - 还可以接收 PUT,PATCH参数

4.52 Response

Response: 服务器返回给客户端的数据

由程序员创建,返回Response对象
  1. 直接返回字符串, 可以返回文本内容,状态码
  2. render_template 渲染模板,将模板转换成字符串
  3. 返回json
  4. 自定义响应对象
    a.使用make_response(data,code)
      - data 返回的数据内容
      - code 状态码
    b.使用Response对象

4.53 重定向

   redirect('http://www.qq.com')
   redirect('/getresponse/')
   
   # 结合反向解析url_for
   # 反向解析,根据函数名字,获取反向路径
   #url_for("蓝图名.函数名")
   #  url_for('函数名', 参数名=value)
      
   redirect(url_for('user.get_response'))
   redirect(url_for('user.get_request', like='apple'))  

4.6 异常处理 

# 终止执行, 抛出异常
    # 主动终止 abort(code)

# 捕获异常
    @app.errorhandler(404)
    def hello(e):
        return 'LOL'


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/440360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开心档之C++ 信号处理

C 信号处理 目录 C 信号处理 signal() 函数 实例 raise() 函数 实例 信号是由操作系统传给进程的中断&#xff0c;会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上&#xff0c;可以通过按 CtrlC 产生中断。 有些信号不能被程序捕获&#xff0c;但是下表…

安全狗入选2023年福建省数字经济核心产业领域创新企业名单

近日&#xff0c;福建省数字福建建设领导小组办公室公布了入选2023年全省数字经济核心产业领域创新企业名单。 作为国内云原生安全领导厂商&#xff0c;安全狗凭借综合表现与优势入选名单&#xff0c;荣膺“未来独角兽”称号。 据悉&#xff0c;此次对“未来独角兽”的评选条件…

调频电视发射机工作原理

我们平常所接触到的电视信号无线传输器材&#xff0c;较多采用调幅方式。原因是调幅方式在整个电视技术领域用得比较普遍&#xff0c;如我们生活中不可或缺的无线和有线电视广播&#xff0c;几乎全部都采用调幅方式。其实&#xff0c;若是用调频方式来传输电视信号&#xff0c;…

Qt Quick - 分隔器综述

Qt Quick - 分隔器综述 一、概述二、MenuSeparator 控件1. 用法&#xff1a; 三、ToolSeparator 控件1. 用法 一、概述 Qt Quick Controls 提供了多种分隔符&#xff0c;其实就是分割一下MenuBar和ToolBar里面的内容。 控件功能MenuSeparator将菜单中的一组项目与相邻项目分开…

Spring Boot + Spring Security基础入门教程

Spring Security简介 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。Spring Security 致力于为 Java 应用程序提供身份验证和授权的能力。 Spring Security 两大重要核心功能&#xff1a;用户认证&#xff08;Authentication&#xff09;和用户授权&am…

pandas 使用loc和iloc读取行数据或列数据

文章目录 一、 使用loc方法读取数据1.1 读取某行某列的值1.2 读取某个区域1.3 按照条件筛选 二. 使用iloc方法读取数据2.1 读取某行某列的值2.2 读取某个区域的数据 创建一个DataFrame data {name:[张三, 李四, 王五, 赵六],age:[20, 21, 22, 23], gender: [0, 1, 1, 1], stat…

网络工程项目报价单应该怎么写?记住这6个步骤准没错!

作为一名网络工程师&#xff0c;你在向潜在客户提供服务时&#xff0c;编写一个清晰明了的项目报价单是至关重要的。一个好的报价单不仅能够让客户更好地了解你的服务内容&#xff0c;还可以为你的项目提供更高的转化率。在本文中&#xff0c;我们将探讨如何编写一个有效的网络…

一图看懂 xlwt 模块:读写 Excel 文件的数据和格式信息, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 xlwt 模块&#xff1a;读写 Excel 文件的数据和格式信息, 资料整理笔记&#xff08;大全&#xff09; 摘要模块图类关系图模块全展开【xlwt】统计常量模块1 xlwt.compat2 x…

Linux系统之部署Linux管理面板1Panel

Linux系统之部署Linux管理面板1Panel 一、1Panel介绍1.1Panel简介2.1Panel特点 二、本地环境规划1.本此实践目的2.本地环境规划 三、检查本地环境1.检查操作系统版本2.检查系统内核版本 四、部署1Panel1.创建安装目录2.一键部署1Panel3.检查1Panel服务运行状态4.检查1Panel监听…

数据结构——二叉搜索树、平衡二叉树、红黑树

数据结构——二叉搜索树 一、二叉搜索树1.二叉搜索树的特性2.二叉搜索树的查找、插入和删除 二、平衡二叉树1.基本介绍2.AVL树的自平衡1&#xff09;自平衡的调整操作2&#xff09;自平衡调整的局面 3.AVL树的代码实现4.AVL树的特点 三、红黑树1.基本介绍2.红黑树的自平衡1&…

秒杀系统如何设计

思路&#xff1a;对于秒杀系统&#xff0c;两个架构优化思路&#xff1a; 1&#xff09;尽量将请求拦截在系统上游 2&#xff09;读多写少的常用多使用缓存 1、限制用户在x秒之内只能提交一次请求 2、同一个uid&#xff0c;或同一类查询&#xff08;例如车次&#xff09;。限制…

配电网光伏/储能双层优化配置模型(选址定容)

目录 1 主要内容 上层目标函数考虑光伏和储能的投资成本。 程序采用模块化编程&#xff0c;并有每个模块功能介绍&#xff0c;方便学习。 2 部分代码 3 程序结果 4 程序结果 1 主要内容 该程序主要方法复现《含高比例可再生能源配电网灵活资源双层优化配置》运行-规划联合…

【Maven 入门】第二章、Maven核心程序解压与配置

一、Maven 官网地址 首页&#xff1a; Maven – Welcome to Apache Maven(opens new window) 下载页面&#xff1a; Maven – Download Apache Maven(opens new window) 本文以maven-3.3.8为例 具体下载地址&#xff1a;https://dlcdn.apache.org/maven/maven-3/3.8.8/bina…

LeetCode刷题集(二)(LeetCode 2037使每位学生都有座位的最少移动次数)

学习目标&#xff1a; 掌握LeetCode2037使每位学生都有座位的最少移动次数 题目内容&#xff1a; 一个房间里有 n 个座位和 n 名学生&#xff0c;房间用一个数轴表示。给你一个长度为 n 的数组 seats &#xff0c;其中 seats[i] 是第 i 个座位的位置。同时给你一个长度为 n 的数…

数据结构-排序3(终章)

前言&#xff1a; 上一章&#xff0c;对交换排序的冒牌和快排做了复盘&#xff0c;这一章对&#xff0c;归并排序以及非比较排序中的计数排序做一个复盘。 目录 2.4归并排序 2.4.1规定递归 2.4.2归并非递归 2.5非比较排序 2.5.1计数排序 2.6排序的稳定性分析 2.6.1冒…

【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解

前言 注意力机制一直是一个比较热的话题&#xff0c;其实在很早之前就提出了&#xff0c;我们在学习图像分类时在SENet就见到过&#xff08;直通车&#xff1a;经典神经网络论文超详细解读&#xff08;七&#xff09;——SENet&#xff08;注意力机制&#xff09;学习笔记&…

金陵科技学院五年一贯制专转本管理学原理考试大纲

金陵科技学院五年一贯制专转本管理学原理考试大纲 一、考核对象 本课程的考核对象为五年一贯制高职专转本“旅游管理”专业入学考试考生。 二、考核方式 本课程考核采用闭卷笔试的方式。 三、命题依据及原则 1、命题依据 参考书目&#xff1a;《管理学——原理与方法》 …

Docker Swarm集群企业案例实战

1. Docker Swarm集群企业案例实战 Docker Swarm 和 Docker Compose 一样&#xff0c;都是 Docker 官方容器编排项目&#xff0c;但不同的是&#xff0c;Docker Compose 是一个在单个服务器或主机上创建多个容器的工具&#xff0c;而 Docker Swarm 则可以在多个服务器或主机上创…

驼峰式匹配-力扣1023-java

一、题目描述 如果我们可以将小写字母插入模式串 pattern 得到待查询项 query&#xff0c;那么待查询项与给定模式串匹配。&#xff08;我们可以在任何位置插入每个字符&#xff0c;也可以插入 0 个字符。&#xff09; 给定待查询列表 queries&#xff0c;和模式串 pattern&a…

未来技术方向——“乐高式”可组装式开发能力

技术正在改变各行各业的发展&#xff0c;Gartner的主要战略技术趋势一直是行业的技术风向标之一。近3年&#xff0c;Gartner在主要的战略技术趋势中都提到组装式技术&#xff0c;2021年首次提出组装式企业&#xff0c;2022年提出可组装式应用&#xff0c;2023年在2项主要战略技…