python轻量级web框架 flask

一、flask介绍


1.flask的构成


Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。


2.使用flask框架的原因


Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。


3.flask的优点


Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。Flask自身不会提供表单验证功能,在项目实施过程中可以自由配置,从而为应用程序开发提供数据库抽象层基础组件,支持进行表单数据合法性验证、文件上传处理、用户身份认证和数据库集成等功能。


4.flask构成部分的介绍


Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别负责业务处理和安全方面的功能,这些基础函数为web项目开发过程提供了丰富的基础组件。
Werkzeug(负责业务处理)库十分强大,功能比较完善,支持URL路由请求集成,一次可以响应多个用户的访问请求;支持Cookie和会话管理,通过身份缓存数据建立长久连接关系,并提高用户访问速度;支持交互式Javascript调试,提高用户体验;可以处理HTTP基本事务,快速响应客户端推送过来的访问请求。
Jinja2(安全方面)库支持自动HTML转移功能,能够很好控制外部黑客的脚本攻击。系统运行速度很快,页面加载过程会将源码进行编译形成python字节码,从而实现模板的高效运行;模板继承机制可以对模板内容进行修改和维护,为不同需求的用户提供相应的模板。


5.flask特点


目前,我国市场上大部分智能交通系统控制平台采用的都是C/S模式,对终端要求较高,且安装繁琐。部分的平台也有采用基于B/S模式传统框架,但这些框架的一些功能大多被固定,缺乏灵活性。采用Flask微型框架做服务器的后台开发,Flask是基于Python开发的框架,类似的框架还有Django、Tornado等,之所选择Flask来开发,原因如下:
后续的基于机器学习的车辆检测与属性识别算法研究,主要开发语言也是应用Python,整个系统统一开发语言,便于开发和后期维护。
Flask因为灵活、轻便且高效的特点被业界认可,同时拥有基于Werkzeug、Jinja2等一些开源库,拥有内置服务器和单元测试,适配RESTful,支持安全的cookies,而且官方文档完整,便于学习掌握。
Flask中拥有灵活的Jinja2模板引擎,提高了前端代码的复用率。这样可以提高开发效率和有利于后期开发与维护。在现有标准中,Flask算是微小型框架。Flask有两个主要依赖:路由、调试和Web服务器网关接口(WebServerGatewayInterface,WSGI)子系统由Werkzeug提供;模板系统由Jinja2提供。Werkzeug和Jinja2都是由Flask的核心开发者开发而成。对于数据库访问、验证Web表单和用户身份认证等一系列功能,Flask框架是不支持的。这些功能都是以扩展组件的方式进行实现,然后再与Flask框架集成。开发者可以根据项目的需求进行相应的扩展,或者自行开发。这与大型框架恰恰相反,大型框架本身做出了大部分决定,难以灵活改变方案。


6.flask的基本模式


Flask的基本模式为在程序里将一个视图函数分配给一个URL,每当用户访问这个URL时,系统就会执行给该URL分配好的视图函数,获取函数的返回值并将其显示到浏览器上,其工作过程见图。
在这里插入图片描述


7.使用的flask版本


使用flask==1.1.1


8.flask提供了什么


  • flask只能够完成最简单的请求响应
  • jinja2 模板系统
  • werkzeug 工具箱(wsgi)
  • 插件

二、开始flask旅程


1. 创建虚拟环境


新建一个文件夹,在里面打开cmd命令

conda create -n FlaskPath python==3.5.2
启动虚拟环境
activate FlaskPath

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2. 安装flask


pip install flask==1.1.1

安装版本小技巧:不知道安装哪个版本,可以查看已有版本号;例如:

pip install flask==5  ## 后面的版本号尽量往大了写

在这里插入图片描述
给我们安装的包
在这里插入图片描述


3. 使用flask


基本语法
在这里插入图片描述
在shell启动py文件进行查看

python hello.py
默认在5000端口

在这里插入图片描述
修改启动端口号为8000,开启debug模式
在这里插入图片描述


4. flask()参数


flask的源文件
在这里插入图片描述

flask源文件参数含义
import_name应用程序包的名称; Flask程序所在的目录,所在的包位置,传 name , 决定了 flask静态文件,模板文件的寻找地址
static_url_path=Nonestatic路由地址,默认为空,可以修改为指定路由地址 ;可用于为web上的静态文件指定不同的路径。默认为static_folder文件夹的名称
static_folder=“static”static目录名,默认为static,可以修改
static_host添加静态路由时使用的主机。默认为None。在配置static_folder时使用host_matching=True是必需的
host_matching设置url_map。host_matching属性。默认值为False
subdomain_matching在匹配路由时,考虑相对于SERVER_NAME的子域。默认值为False
template_folder包含应用程序应该使用的模板的文件夹。默认设置为应用程序根路径中的“templates”文件夹
instance_path应用程序的另一个实例路径。默认情况下,包或模块旁边的文件夹‘instance’被认为是实例路径
instance_relative_config如果将用于加载配置的相对文件名设置为True,则假定该配置相对于实例路径而不是应用程序根目录
root_path默认情况下,Flask将自动计算到应用程序根目录的路径。在某些情况下,这是无法实现的(例如,如果包是python3命名空间包),需要手动定义。
  • import_name

    • Flask程序所在的目录,所在的包位置,传 name
    • 决定了 flask静态文件,模板文件的寻找地址
  • static_url_path

    • 静态文件的访问地址,可以不传,默认为 / + static_folder
      在这里插入图片描述
  • static_folder

    • 静态文件的目录,可以不传,默认为static
      在这里插入图片描述
  • template_folder

    • 模板文件的存储位置,可以不传,默认为 templates
      在这里插入图片描述

5. 路由


① flask中的路由跟django中的路由的区别


django中使用路由: urls.py path("/",视图)
然后再在视图中写def index()

flask路由 直接在py文件中 使用装饰器

  • @app.route(’/index/’)
  • def index():

② flask中路由的注意事项及路由的写法


  • 写路由 需要注意:
  1. url应该以/ 开头
  2. url写法 标准的是 / /
    在这里插入图片描述
  3. 视图函数不能重名
  4. 习惯: 将视图函数的名字命名为 路由的名字

③ 路由传参


1. 转换器语法 <>

<> 叫转换器语法 默认为string类型,

  • 路由中使用了
  • 视图中增加参数 username
  • 类型:
    • string 默认类型
    • int 整形
    • float
      在这里插入图片描述

2. path: 包含斜杠的路径,通常用于路径的拼接

在这里插入图片描述


3. uuid:通用唯一识别码

在这里插入图片描述
路由后面传的参数id为:例如uuid4()所对应的一串

uuid4随机数
在这里插入图片描述


④ flask请求


在django中

django 
## 查看请求方式
request.method
## 获取请求中的内容所对应的值
request.GET.get()
request.POST.get()

1.flask get请求

第一步:导包

from flask import request

默认支持get请求

获取get请求的参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2. flask post请求

报错405,
原因:没有给其增加请求方式

在这里插入图片描述
flask 默认不支持post请求
解决:增加请求方式

在这里插入图片描述
获取post请求参数
在这里插入图片描述
如果要在一个视图函数中实现多个请求方式可以在请求方式中添加需要实现的请求
在这里插入图片描述


6. flask中request的一些方法


 from flask import request
  • 请求上下文
request中的一些方法作用
args获取get请求的参数
form获取post请求的参数
cookies获取cookie
method获取请求方式 GET POST
url获取请求url地址
file获取请求上传的文件
headers请求报文的头

7. 静态文件


django—》 配置settings中增加 static目录位置

flask中使用静态文件

在flask启动文件的同目录创建static目录,可以通过修改Flask参数修改 static目录
在这里插入图片描述


8. 模板(变量传递的方法)


在脚本文件同级目录创建 templates目录,可以通过修改Flask参数改变模板文件的目录
flask使用的 jinja2 的模板系统

  • 调用静态模板
    • render_template(“html”)
  • 传递数据
    • 变量的传递的第一种方法
      在这里插入图片描述
    • 变量传递第二种方法
      在这里插入图片描述
    • 变量传递第三种方法
      • **locals()
        在这里插入图片描述

① 模板语法


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>我是templates</h1>
    <hr>
    <h2>变量的使用</h2>
    {{ name }} {{ age }}
    <hr>
    <h2>字符串处理方法</h2>
    {{ name.capitalize() }}
    <br>
    {{ name.upper() }}
    <br>
    {{ name.replace("e","###") }}
    <hr>
    {{ name.1 }} <!--取字符串中索引为1的第二个-->
    <br>
    {{ name + "再见" }}
    <br>
    {{ name.split("l") }}
    <hr>
    <h2>jinja2循环</h2>
    {% for one in name %}
        {{one}}<br>
    {% endfor%}
    <hr>
    <h2>jinja2判断</h2>
    {% if name == "hello"%}
        {{name}}
    {% else %}
        <span>没有名字</span>
    {% endif %}
    <hr>
    {{ mydict.get("yuwen") }}
    {{ mydict.shuxue }}
    {{ mydict['shuxue'] }}
    <br>
{% for key,value in mydict.items() %}
    {{key}}:{{value}}
{% endfor %}
    <img src="/static/lang.jpg" alt="">

</body>
</html>

在这里插入图片描述


9. 模板继承


与django一样

base.html

	{% block title %}  {%endblock%}

子页面

	{% extends "base.html"%}

	{% block title %} 子页面{%endblock%}



base页面    提取公共部分 ,修改静态文件位置,增加block


10. 启动配置项说明


在这里插入图片描述

启动配置项介绍
host主机ip
port端口号,默认5000
debugdebug模式,True代表了开启debug模式,可显示错误,修改代码后自动重启项目

  • 2
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值