(1)python中的 库/框架 包 模块 函数
一段程序中:
一个模块(module)就是一个py文件,模块的名字就是该文件的名字(不包含后缀)
一个 包(package)就是一个文件夹,(Python2规定该文件夹必须包含一个 __init__.py
,Python3没有要求),包名就是文件夹名。
能解决同一类问题模块的集合就可以叫做库/框架,库中包含模块的个数任意
python中具有相同属性和方法的对象归为一个类(class),导入一个类表示程序的类型
实例化这个类,成为一个对象
类是对象的抽象化,对象是类的实例化
(2)web服务和web应用框架
Web服务(Web service)是通过万维网( WWW )超文本传输协议( HTTP )进行通信的客户端和服务器应用程序。 Web服务提供了在各种平台和框架上运行的软件应用程序之间进行相互操作的标准方法,即通过标准的Web协议提供服务
根据W3C的定义,Web服务应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口(API)所组成的,它们通过网络执行客户所提交服务的请求。
Web应用框架(Web application framework)是一种开发框架,用来支持动态网站、网络应用程序及网络服务的开发
(3)flask
Flask是使用python编写的轻量级 Web 应用框架
轻量级指flask具有核心简单,易于扩展的特性:只保留了web开发的核心功能,其他功能(文件上传、数据库集成等)由外部扩展实现,甚至可以自己开发扩展
(1)python IDE
IDE:Integrated Development Environment 集成开发环境
集成开发环境是用于提供程序开发环境的应用程序,包括代码编辑器(编写代码)、编译器(编译源代码就是将高级语言翻译成计算机语言)、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件
python常用的集成开发环境:PyCharm
PyCharm: the Python IDE for Professional Developers by JetBrains
下载安装成功后,file→open打开项目文件夹或file→new新建项目文件夹
为项目设置python解释器
Pycharm解释器:
①system interpreter:本地的解释器
②virtual Enviroment:虚拟环境的独立解释器:file→settings(设置)→project:xxx
→add(选择已创建的虚拟环境中的python解释器路径)
设置完毕后打开terminal(终端)会话,命令提示符前出现(虚拟环境名),表示虚拟环境已激活,此后每次打开项目,pycharm都会自动激活该项目的虚拟环境并且把工作目录定位到项目根目录
(2)虚拟环境
虚拟环境:隔离的python解释器环境,通过创建虚拟环境获得一个独立的python解释器环境
不同的项目常常会依赖不用版本的库或python版本,使用虚拟环境打造独立的python解释器环境可以保持全局python解释器环境的干净,避免包和版本的混乱
用于创建虚拟环境的python包:
①virtualenv:
pip install virtualenv //安装虚拟环境软件
virtualenv flask //创建虚拟环境flask
. flask/bin/activate //激活虚拟环境
②pipenv:
pipenv是基于pip的python包管理工具,和pip用法相似,可以看作pip的加强版;是pip、pipfile(需要安装的依赖包列表文件)、virtualenv的结合体,让包安装、包依赖管理和虚拟环境管理更方便
pip install pipenv //安装pipenv
pipenv --version //查看pipenv版本信息
pipenv install //(在项目根目录下执行该命令)创建虚拟环境
pipenv统一管理所有虚拟环境:
Windows系统中虚拟环境文件夹目录默认为 C:\Users\Administrator\.virtualenvs
Linux系统中虚拟环境文件夹的目录默认为 ~/.local/share/virtualenvs/
若想在项目目录内创建虚拟环境文件夹需要单独设置环境变量
(1)创建程序实例
Flask类是flask的核心类,提供了很多与程序相关的属性和方法
从flask包中导入Flask类,传入Flask类构造方法的第一个参数是模块或包的名称(特殊变量_name_的值由python根据所处模块赋予,若程序名为app.py,这个变量的值为app)
from flask import Flask
app = Flask(_name_)
(2)注册路由
客户端和服务器上的flask程序的交互概括为:
①用户在浏览器输入url访问某个资源
②flask接收用户的请求并分析请求的url
③为这个url找到对应的处理函数
④执行这个处理函数并生成响应返回给浏览器
⑤浏览器接收并解析响应,将信息显示在页面中
用户 浏览器 服务器端flask程序
unproved:
①请求端服务器通过url发送消息到响应端服务器(的某个端口)
②响应端服务器flask程序接收请求并分析请求的url,找到对应的处理函数,执行这个函数并生成响应返回给请求端服务器
③请求端服务器收到返回消息
服务器 服务器
在上述步骤中,请求的底层逻辑由flask完成,我们只需要建立处理请求的函数,并定义其对应url的规则:
为函数附加app.route()装饰器 ,并传入url规则作为参数
就可以让url与函数建立关联
@app.route('/')
def index():
return 'Hello,world!
'
在这个程序里,app.route()装饰器把跟地址/和index()函数绑定
访问url触发视图函数,页面显示Hello,world!
@app.route('/hi')
@app.route('/hello')
def say_hello():
return 'Hello,Flask!
'
响应函数绑定多个url
@app.route('/greet/')
def greet(name):
return 'Hello, %s!
' % name
装饰器参数中的url规则可以包含变量,如/greet/
@app.route('/greet',defaults={'name': 'Programmer'})
@app.route('/greet/')
def greet(name='Programmer'):
return 'Hello, %s!
' % name
url规则中包含变量,用户访问的url没有添加变量,如/greet,那么flask在匹配失败后会返回一个404错误响应
常见处理办法是在app.route()装饰器里使用defaults参数设置url变量的默认值
以上代码中,若用户访问/greet,变量name会使用默认值Programmer
注解:
route()装饰器的第一个参数是url规则,用字符串表示,必须以斜杠开始(相对url,不包含域名,如www.chichibomm.com,'/'对应的就是根地址www.chichibomm.com;)
flask程序部署在的服务器的域名即为该程序中/代表的根地址
(3)程序运行
①启动开发服务器
flask内置了一个简单的开发服务器(由依赖包Werkzeug提供),供开发和测试阶段使用
flask命令启动:
flask内置了一套flask命令脚本(由依赖包Click提供),可以通过flask命令执行内置命令、扩展提供的命令或自定义的命令
flask --help //查看所有可用的命令
flask run //启动内置的开发服务器
python -m flask run //上述启动方法若报错,此法可替
flask run 命令运行开发服务器默认监听 http://127.0.0.1:5000/地址(Ctrl+C退出)
(http://127.0.0.1即localhost,是指向本机的IP地址,一般用于测试,等价于http://localhost)
执行命令后自动寻找程序实例的模块位置并运行,在浏览器访问这个地址,网页上会出现相应显示
(自动寻找从当前目录寻找app.py和wsgi.py模块,并从中寻找名为app或application的程序实例;或从环境变量FLASK_APP对应的值寻找名为app或application的程序实例)
pycharm启动:
②本地运行:
if __name__ == '__main__':
app.run()
用run()函数来让应用运行在本地服务器上。 其中 if __name__ == '__main__': 确保服务器只会在该脚本被 Python 解释器直接执行的时候才会运行,而不是作为模块导入的时候。
程序运行更多的启动选项:
flask run --host=0.0.0.0
服务器监听所有外部请求,对外可见
(个人计算机一般没有公网IP,局域网内的计算机可以访问运行了上述程序的个人计算机IP对应端口得到对应显示)
flask run --port=8000
服务器监听来自端口8000的请求,页面显示在端口8000的位置上