基于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 ...
随机推荐
- jQuery框架-1.基础知识
jQuery简介 jQuery,顾名思义是JavaScript和查询(Query),jQuery是免费.开源的.它可以简化查询DOM对象.处理事件.制作动画.处理Ajax交互过程且兼容多浏览器的jav ...
- eclipse - The superclass "javax.servlet.http.HttpServlet" was not found on the Java
- es6学习笔记--解构赋值
昨天学习了es6语法中解构赋值,解构赋值在声明中和函数传参提高了灵活性和便捷性,值得掌握该语法. 概念: ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构 ...
- 最长k可重线段集问题
和那道可重区间集一样 不过这道题可能有垂直于x轴的线段,这就很烦了,直接连会有负环,判掉又会WA 可以想办法把r端点和l端点分开,又要保证答案不变 那么直接把区间l,r都乘以2,l=r时r++,否则l ...
- linux下tomcat 8的安装以及tomcat启动慢问题
今天在 linux 下安装了 tomcat,中间也是一路波折,最终安装好了.感觉应该有不少伙伴跟我一样都会踩到这些坑,打算记录下来.使用的是通用(ubantu,debian, centos 均可)的安 ...
- mac 配置虚拟主机
http://www.upwqy.com/details/4.html 编辑httpd.conf文件,输入命令: vim /etc/apache2/httpd.conf 编辑httpd-vhosts. ...
- ORACLE之莫名---ORA-02290: 违反检查约束条件
最近碰到一个十分棘手的问题,Java程序插入空数据到oracle时报ORA-02290: 违反检查约束条件(XXXX.×××××),这明显是在设置不可为空的字段上插入为空内容导致,但是检查数据库表后发 ...
- 数据结构之队列c代码实现
一学期的数据结构,总不能毫无收获吧,因为书上的很多代码并不能实现,我一个编程小白可怎么过呢,难得假期有时间,于是我寻求度娘,从四面八方找了些可以编译通过的源码,这一次是队列,后面我还会逐渐补充,如果有 ...
- php seaslog的使用
今天有幸在慕课网看到了 关于php日志处理工具 seasLog 的使用视频,本着好奇看完了该视频,觉得不错,便自己也倒腾了下,现在整理出来 seaslog github: https://githu ...
- python数据库连接池设计
一.背景: 传统访问资源,一般分为一下几个步骤: 1.实例数据驱动对象与链接资源.2.实例操作资源游标.3.获取资源.4.关闭链接资源. 根据以上步骤,我们可以很简单使用这个原始方法来访问资源为我们业 ...