基于Python的Web应用开发实践总结
基于Python的Web应用开发学习总结
项目地址
本次学习采用的是Flask框架。根据教程开发个人博客系统。博客界面如图所示。
整个学习过程收获很多,以下是学习总结。
1、virtualenv
virtualenv是第三方工具,用于创建虚拟环境。可以为每个程序单独创建虚拟环境,每个虚拟环境互不影响,并且不影响全局的环境,也就是说在不同的虚拟环境里可以使用不同版本的python和插件等。使用虚拟环境的另一好处是,不需要管理员权限。
以下是virtualenv的安装和使用:
1、检查是否安装了virtualenv virtualenv --version
2、安装:在https://bitbucket.org/pypa/setuptools
的setuptools
中下载脚本ez_setup.py
,然后执行
python ez_setup.py
easy_install virtualenv
3、创建:在需要使用虚拟环境的工程根目录下使用命令
virtualenv venv
venv为虚拟环境的名字,可根据个人需求更改。创建成功后,在当前文件夹下会出现一个子文件夹,名字就是上述命令中指定的参数,与虚拟环境相关的文件都保存在这个子文件夹中。
4、使用:虚拟环境的使用需要激活,命令如下:
venv\Scripts\activate
成功激活的话命令提示符会变为(venv) $
,如果需要退出虚拟环境,可使用命令:
deactivate
2、项目结构
基本项目结构如图所示:
1、 Flask程序一般都保存在名为app的包中:
- api_0_1存放API蓝本的包
- auth和main是存放主程序蓝本和认证蓝本的包
- static存放静态文件,例如css文件等
- templates用于存放网页模板
2、migrations 文件夹包含数据库迁移脚本;
3、requirements里的文件列出了不同开发环境下需要的所有依赖包,便于在其他电脑中重新生成相同的虚拟环境;
4、 config.py 存储配置;
5、manage.py 用于启动程序以及其他的程序任务。
将文件夹变为Python模块只需要在该文件夹下新增__init__.py即可。注:_init_.py的作用如下:
- 相当于class中的def init(self):函数,用来初始化模块。
- 把所在目录当作一个package处理
- 更多相关
3、蓝本
Flask使用蓝本技术将项目模块化。蓝本和程序类似,也可以定义路由。不同的是,在蓝本中定义的路由处于休眠状态, 直到蓝本注册到程序上后,路由才真正成为程序的一部分。使用位于全局作用域中的蓝本时,定义路由的方法几乎和单脚本程序一样。
蓝本的使用分为两步:创建和注册。
- 创建:通过实例化一个Blueprint 类对象可以创建蓝本:
#app/main__init__.py
from flask import Blueprint #导入蓝本模块
main = Blueprint('main', __name__) # 第一个参数为蓝本的名字,第二个参数为蓝本所在的包或模块
from . import views, errors #避免循环导入依赖,在末尾导入错误处理程序和路由程序
- 注册:调用程序的自带的
register_blueprint
将蓝本注册到程序上
#app_init_.py
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
4、Flask扩展
Flask扩展可以理解为插件,小到可以称为“微框架”,但是,小并不意味着功能少。Flask的核心包含了基本服务,其他功能则可通过扩展来实现。
扩展的使用也分为两步:安装和导入。一般使用命令pip install 扩展名
来安装扩展,安装完成后,直接在程序中用from ... import ...
语句导入使用即可(专为 Flask 开发的扩展都暴漏在 flask.ext 命名空间下)。以下示例代码为安装使用flask-script扩展:
首先,在命令行中安装flask-script:
(venv) $ pip install flask-script
在程序中使用:
from flask.ext.script import Manager #导入
manager = Manager(app)
# ... 中间无关代码省略
if __name__ == '__main__':
manager.run()
本项目在开发过程中,使用到了许多扩展,例如Flask-Login、Flask-Bootstrap、Flask-WTF等等。
5、实现符合 REST 架构的 API
Flask 是开发 REST 架构 Web 服务的理想框架,因为 Flask 天生轻量。
REST API 相关的路由是一个自成一体的程序子集,所以为了更好地组织代码,最好把这些路由放到独立的蓝本中。使用 Flask 创建 REST Web 服务可以应用在微信小程序后台服务,为微信小程序提供资源。如果时间允许,打算再在开发一个微信小程序后台系统后单独再 介绍REST 架构 Web 服务。
基于Python的Web应用开发实践总结的更多相关文章
- 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)
目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构 前言 学习Python也有一个半月时间了,学到现在感觉 ...
- 学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码
在学习python Web开发时,我们会选择使用Django.flask等框架. 在学习flask时,推荐学习看看<Flask Web开发:基于Python的Web应用开发实战(第2版)> ...
- 基于Python的WEB接口开发与自动化测试 pdf(内含书签)
基于Python的WEB接口开发与自动化测试 目录 目 录O V目 录章 Python 学习必知 ................................................... ...
- FlaskWeb开发:基于Python的Web应用开发实战
所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/63/ 来源:python黑洞网,专注 ...
- 基于Python的Web应用开发实战——3 模板
要想开发出易于维护的程序,关键在于编写形式简洁且结构良好的代码. 当目前为止,你看到的示例都太简单,无法说明这一点,但Flask视图函数的两个完全独立的作用却被融合在了一起,这就产生了一个问题. 视图 ...
- 基于Python的Web应用开发实战——2 程序的基本结构
2.1 初始化 所有Flaks程序都必须创建一个程序实例. Web服务器使用一种名为Web服务器网关接口(Web Server Gateway Interface,WSGI)的协议,把接收自客户端的所 ...
- 基于python的web应用开发-添加关注者
社交web允许用户之间相互联系. 例如: 关注者.好友.联系人.联络人或伙伴. 记录两个用户之间的定向联系,在数据库查询中也要使用这种联系. 一.论数据库关系 一对多关系 数据库使用关系建立记录之间的 ...
- 基于python的互联网软件测试开发(自动化测试)-全集合
基于python的互联网软件测试开发(自动化测试)-全集合 1 关键字 为了便于搜索引擎收录本文,特别将本文的关键字给强调一下: python,互联网,自动化测试,测试开发,接口测试,服务测试,a ...
- 初识TPOT:一个基于Python的自动化机器学习开发工具
1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...
随机推荐
- Drying POJ - 3104
It is very hard to wash and especially to dry clothes in winter. But Jane is a very smart girl. She ...
- Win Form不能响应键盘事件
在窗体属性中,将KeyPreview设置为true
- Java sax、dom、pull解析xml
-------------------------------------SAX解析xml---------------------------------- >Sax定义 SAX是一个解析速度 ...
- 英文汉语切换的导航栏,纯css制作。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Graham凸包算法简介
凸包真是一个神奇的算法.. 概念 凸包,我理解为凸多边形 叉积 对于向量AB和向量BC,记向量AB*向量BC = AB * BC * sin ∠ABC,而叉积的绝对值其实就是S△ABC/2 对于平面上 ...
- Android视频直播:流媒体服务器搭建
一.前言 实时视频直播是这两年非常火的技术形态,已经渗透到教育.在线互娱等各种业务场景中.但要搭建一套实时视频直播系统,并非易事,下面针对直播系统的的搭建做一下说明: 1.1 通常的直播系统的技术模型 ...
- 关于LINUX各类系统资源整合
在系统维护的过程中,随时可能有需要查看 CPU和内存的使用率,并根据相应信息分析系统状况的需求.本文介绍一下几种常见的Linux系统资源查看命令. 1.总体内存占用的查看 命令:free 图1 fre ...
- css学习の第一弹—格式创建
构成结构:选择符(又称为选择qi器){声明(属性:值):}*****注意:大括号,冒号,每个声明后的分号. 注释:/*注释内容写在这里*/ 一.css样式 css样式写的地方的不同分类:内联式.嵌入式 ...
- PHP方法实现1-9数列中添加‘+’,‘-’或'',使和为100,并输出数列
今天收到个题目:编写一个在1,2,3,4,5,6,7,8,9(顺序不能变)数字之间插入 + 或- 或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如 1+2+34-5+67-8+9 ...
- kafka概念使用简介注意点
使用场景 大数据量.低并发.高可用.订阅消费场景 概念理解 分区个数与消费者个数 分区个数 = 消费者个数 :最合适状态 分区个数 > 消费者个数 :某些消费者要承担更多的分区数据消费 分区个数 ...