基于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 ...
随机推荐
- View的平移、缩放、旋转以及位置、坐标系
原创 2015年05月12日 13:15:29 标签: Android / Scroll / Scale / Translation / Rotation 24733 Android开发中,经常会接触 ...
- Spring有什么缺点?
Spring有什么缺点如下: 1.jsp中要写很多代码: 2.控制器过于灵活,缺少一个公用控制器: 3.不支持分布式部署.
- 清橙A1212:剪枝
题面 清橙 Sol 一种新的树上\(DP\)姿势 从左往右按链\(DP\) 做法: 维护两个栈\(S1\),\(S2\) \(S1\)存当前的链 \(S2\)存分叉点以下要改的链 \(Dfs\),弄一 ...
- Idea工具开发 SpringBoot整合JSP(毕设亲测可用)
因为,临近毕业了,自己虽然也学了很多框架.但是,都是在别人搭建好的基础上进行项目开发.但是springboot的官方文档上明确指出不提倡使用jsp进行前端开发,但是在校期间只学了jsp作为前端页面.所 ...
- 使用mysql将备份的sql文件导入到数据库
一.背景 承接上一篇文章<如何使用mysqldump备份数据库>,数据库备份后将用于恢复或者在多个测试环境上迁移.下面描述如何通过批处理文件实现数据加载恢复. 二.环境准备 跟上一篇一样, ...
- Firefox扩展安装
firefox扩展和chrome扩展非常相似,甚至兼容.因总结过chrome扩展的开发,这里不提,本篇谈谈firefox扩展的安装. 1.打包 所谓的打包,就是压缩,利用普通的右键压缩文件夹,这样形成 ...
- 11.C++-临时对象分析
首先来参考以下代码: #include <stdio.h> class Test { int mi; public: Test(int i) { mi = i; } Test() { Te ...
- 关于虚拟机打开ubuntu黑屏的问题
取消勾选“加速3D图形“后重启即可.
- 进程优化工具Process Lasso Pro 8.4官方版+激活破解方法
Process Lasso是一款来自美国的系统进程优化工具,基于特殊算法动态调整进程的优先级别,通过合理的设置进程优先级来实现降低系统负担的功能.可有效避免蓝 屏.假死.进程停止响应.进程占用 CPU ...
- 破解ServiceStack.Redis每小时6000次限制
在.net里我们操作Redis常用的组件就是ServiceStack.Redis了,但是这个从4.0版本后开始商业化了,我们在使用的时候, 会有很多限制: 1.类型限制, 类型限制是20,这个组件自带 ...