Flask介绍

本文解析了Web框架的基本原理,包括框架如何处理HTTP请求、响应过程,以及框架与服务器之间的交互方式。对比了轻量级框架Flask与重量级框架Django的特点,并介绍了如何使用Flask进行Web开发。

框架做了些什么

服务端按照职责仔细划分,可以分为服务器+框架,服务器server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端。框架处理的工作是接收由server转发的request,处理请求,并将处理结果返回给server。其中server和框架之间定义了一种通信规范,叫wsgi协议。
所以,框架一般只做路由分发和视图处理,但是也有例外,比如tornado就自己实现了服务器的功能。
做一下总结,在web开发中程序员写代码相当于站在flask框架这个人的肩膀上,而flask这个框架程序的实现又是基于实现了wsgi的socket服务端程序的,比如werkzurg.

werkzurg

from werkzeug.serving import run_simple
from werkzeug.wrappers import Request, Response

@Request.application
def run(request):
    return Response('hhh')

if __name__ == '__main__':
    run_simple('', 5000, run)

框架对比

框架都有的一个功能就是路由分发。这也是框架最基础的功能。从框架的轻质来分:
重量级框架: 如Django,除了实现路由,还实现自己的template,为了操作数据库方便还有自己的orm,功能全。但是不易自定制,例如想要更换内置的orm,因为框架内部依赖比较紧密,所以牵一发而动全身。
轻量级框架:如Flask,核心就是基于weekzurg的路由,模版用的是第三方的jinja2,没有自己的orm,可以借助第三方,如sqlalchemy。要用什么完全由开发者决定。

基本使用

from flask import Flask

app = Flask(__name__)

@app.route("/")
def idnex():
    return 'index'

if __name__ == '__main__':
    app.run()

对于这个最基本的程序,有几点需要说明:

  1. 导入包的时候最好不要使用from flask import *,PEP8不建议这么做,最直观的感受是看代码的人不知道程序的模块到底来自哪个包
  2. 用FLask类实例化的时候传入了__name____name__的含义是模块名,Flask类有默认的static参数,当我们在浏览器输入http:127.0.0.1:5000/static/index.html', flask框架怎么知道去哪个目录下找index.html这个文件呢?答案就是这里的name, 根据name得到的模块名所在的目录,把这个目录当作根目录,flask会去这个根目录下寻找静态目录的静态文件。如果随便写了一个不存在的模块,如app=Flask('qwewq')`,那么flask会自作主张就把当前py文件所在目录当作根目录。
  3. app.run 这个方法是开启一个简单的服务器,在实际生产中这一步会被替换的
  4. 我们在浏览器输入http:127.0.0.1:5000/static/index.html',flask当拿到请求的url看到前缀是和static_url_path`设置的一样时,就会去静态目录去找文件而不走路由
  5. django项目的py文件放置位置大体是固定的,但是flask项目文件的组织形式由开发者来定

linux安装虚拟环境

虚拟环境使用virtualenv创建,可以查看系统是否安装了virtualenv:$ virtualenv --version
安装虚拟环境:

$ pip install virtualenv
$ pip install virtualenvwrapper

安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:

# 1、创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs

# 2、打开~/.bashrc文件,并添加如下:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

# 3、运行
source ~/.bashrc

创建虚拟环境:mkvirtualenv flask_test
进入虚拟环境:$ workon flask_test
退出虚拟环境: 如果所在环境为真实环境,会提示deactivate:未找到命令 $ deactivate Flask_py

转载于:https://www.cnblogs.com/longyunfeigu/p/9430615.html

在车辆工程中,悬架系统的性能评估和优化一直是研究的热点。悬架不仅关乎车辆的乘坐舒适性,还直接影响到车辆的操控性和稳定性。为了深入理解悬架的动态行为,研究人员经常使用“二自由度悬架模型”来简化分析,并运用“传递函数”这一数学工具来描述悬架系统的动态特性。 二自由度悬架模型将复杂的车辆系统简化为两个独立的部分:车轮和车身。这种简化模型能够较准确地模拟出车辆在垂直方向上的运动行为,同时忽略了侧向和纵向的动态影响,这使得工程师能够更加专注于分析与优化与垂直动态相关的性能指标。 传递函数作为控制系统理论中的一种工具,能够描述系统输入和输出之间的关系。在悬架系统中,传递函数特别重要,因为它能够反映出路面不平度如何被悬架系统转化为车内乘员感受到的振动。通过传递函数,我们可以得到一个频率域上的表达式,从中分析出悬架系统的关键动态特性,如系统的振幅衰减特性和共振频率等。 在实际应用中,工程师通过使用MATLAB这类数学软件,建立双质量悬架的数学模型。模型中的参数包括车轮质量、车身质量、弹簧刚度以及阻尼系数等。通过编程求解,工程师可以得到悬架系统的传递函数,并据此绘制出传递函数曲线。这为评估悬架性能提供了一个直观的工具,使工程师能够了解悬架在不同频率激励下的响应情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值