基于Python的Web应用开发学习总结

项目地址

  本次学习采用的是Flask框架。根据教程开发个人博客系统。博客界面如图所示。









整个学习过程收获很多,以下是学习总结。

1、virtualenv

virtualenv是第三方工具,用于创建虚拟环境。可以为每个程序单独创建虚拟环境,每个虚拟环境互不影响,并且不影响全局的环境,也就是说在不同的虚拟环境里可以使用不同版本的python和插件等。使用虚拟环境的另一好处是,不需要管理员权限。

以下是virtualenv的安装和使用:

1、检查是否安装了virtualenv virtualenv --version

2、安装:在https://bitbucket.org/pypa/setuptoolssetuptools 中下载脚本ez_setup.py,然后执行

  1. python ez_setup.py
  2. easy_install virtualenv

3、创建:在需要使用虚拟环境的工程根目录下使用命令

  1. virtualenv venv

venv为虚拟环境的名字,可根据个人需求更改。创建成功后,在当前文件夹下会出现一个子文件夹,名字就是上述命令中指定的参数,与虚拟环境相关的文件都保存在这个子文件夹中。

4、使用:虚拟环境的使用需要激活,命令如下:

  1. venv\Scripts\activate

成功激活的话命令提示符会变为(venv) $ ,如果需要退出虚拟环境,可使用命令:

  1. 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的作用如下:

  1. 相当于class中的def init(self):函数,用来初始化模块。
  2. 把所在目录当作一个package处理
  3. 更多相关

3、蓝本

   Flask使用蓝本技术将项目模块化。蓝本和程序类似,也可以定义路由。不同的是,在蓝本中定义的路由处于休眠状态, 直到蓝本注册到程序上后,路由才真正成为程序的一部分。使用位于全局作用域中的蓝本时,定义路由的方法几乎和单脚本程序一样。

  蓝本的使用分为两步:创建和注册。

  • 创建:通过实例化一个Blueprint 类对象可以创建蓝本:
  1. #app/main__init__.py
  2. from flask import Blueprint #导入蓝本模块
  3. main = Blueprint('main', __name__) # 第一个参数为蓝本的名字,第二个参数为蓝本所在的包或模块
  4. from . import views, errors #避免循环导入依赖,在末尾导入错误处理程序和路由程序
  • 注册:调用程序的自带的register_blueprint将蓝本注册到程序上
  1. #app_init_.py
  2. from .main import main as main_blueprint
  3. app.register_blueprint(main_blueprint)

4、Flask扩展

  Flask扩展可以理解为插件,小到可以称为“微框架”,但是,小并不意味着功能少。Flask的核心包含了基本服务,其他功能则可通过扩展来实现。

  扩展的使用也分为两步:安装和导入。一般使用命令pip install 扩展名来安装扩展,安装完成后,直接在程序中用from ... import ...语句导入使用即可(专为 Flask 开发的扩展都暴漏在 flask.ext 命名空间下)。以下示例代码为安装使用flask-script扩展:

  首先,在命令行中安装flask-script:

  1. (venv) $ pip install flask-script

  在程序中使用:


  1. from flask.ext.script import Manager #导入
  2. manager = Manager(app)
  3. # ... 中间无关代码省略
  4. if __name__ == '__main__':
  5. manager.run()

  本项目在开发过程中,使用到了许多扩展,例如Flask-Login、Flask-Bootstrap、Flask-WTF等等。

5、实现符合 REST 架构的 API

  Flask 是开发 REST 架构 Web 服务的理想框架,因为 Flask 天生轻量。

  REST API 相关的路由是一个自成一体的程序子集,所以为了更好地组织代码,最好把这些路由放到独立的蓝本中。使用 Flask 创建 REST Web 服务可以应用在微信小程序后台服务,为微信小程序提供资源。如果时间允许,打算再在开发一个微信小程序后台系统后单独再 介绍REST 架构 Web 服务。

基于Python的Web应用开发实践总结的更多相关文章

  1. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)

    目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构   前言 学习Python也有一个半月时间了,学到现在感觉 ...

  2. 学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码

    在学习python Web开发时,我们会选择使用Django.flask等框架. 在学习flask时,推荐学习看看<Flask Web开发:基于Python的Web应用开发实战(第2版)> ...

  3. 基于Python的WEB接口开发与自动化测试 pdf(内含书签)

    基于Python的WEB接口开发与自动化测试 目录 目 录O V目 录章 Python 学习必知 ................................................... ...

  4. FlaskWeb开发:基于Python的Web应用开发实战

    所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/63/ 来源:python黑洞网,专注 ...

  5. 基于Python的Web应用开发实战——3 模板

    要想开发出易于维护的程序,关键在于编写形式简洁且结构良好的代码. 当目前为止,你看到的示例都太简单,无法说明这一点,但Flask视图函数的两个完全独立的作用却被融合在了一起,这就产生了一个问题. 视图 ...

  6. 基于Python的Web应用开发实战——2 程序的基本结构

    2.1 初始化 所有Flaks程序都必须创建一个程序实例. Web服务器使用一种名为Web服务器网关接口(Web Server Gateway Interface,WSGI)的协议,把接收自客户端的所 ...

  7. 基于python的web应用开发-添加关注者

    社交web允许用户之间相互联系. 例如: 关注者.好友.联系人.联络人或伙伴. 记录两个用户之间的定向联系,在数据库查询中也要使用这种联系. 一.论数据库关系 一对多关系 数据库使用关系建立记录之间的 ...

  8. 基于python的互联网软件测试开发(自动化测试)-全集合

    基于python的互联网软件测试开发(自动化测试)-全集合 1   关键字 为了便于搜索引擎收录本文,特别将本文的关键字给强调一下: python,互联网,自动化测试,测试开发,接口测试,服务测试,a ...

  9. 初识TPOT:一个基于Python的自动化机器学习开发工具

    1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...

随机推荐

  1. Drying POJ - 3104

    It is very hard to wash and especially to dry clothes in winter. But Jane is a very smart girl. She ...

  2. Win Form不能响应键盘事件

    在窗体属性中,将KeyPreview设置为true

  3. Java sax、dom、pull解析xml

    -------------------------------------SAX解析xml---------------------------------- >Sax定义 SAX是一个解析速度 ...

  4. 英文汉语切换的导航栏,纯css制作。

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. Graham凸包算法简介

    凸包真是一个神奇的算法.. 概念 凸包,我理解为凸多边形 叉积 对于向量AB和向量BC,记向量AB*向量BC = AB * BC * sin ∠ABC,而叉积的绝对值其实就是S△ABC/2 对于平面上 ...

  6. Android视频直播:流媒体服务器搭建

    一.前言 实时视频直播是这两年非常火的技术形态,已经渗透到教育.在线互娱等各种业务场景中.但要搭建一套实时视频直播系统,并非易事,下面针对直播系统的的搭建做一下说明: 1.1 通常的直播系统的技术模型 ...

  7. 关于LINUX各类系统资源整合

    在系统维护的过程中,随时可能有需要查看 CPU和内存的使用率,并根据相应信息分析系统状况的需求.本文介绍一下几种常见的Linux系统资源查看命令. 1.总体内存占用的查看 命令:free 图1 fre ...

  8. css学习の第一弹—格式创建

    构成结构:选择符(又称为选择qi器){声明(属性:值):}*****注意:大括号,冒号,每个声明后的分号. 注释:/*注释内容写在这里*/ 一.css样式 css样式写的地方的不同分类:内联式.嵌入式 ...

  9. PHP方法实现1-9数列中添加‘+’,‘-’或'',使和为100,并输出数列

    今天收到个题目:编写一个在1,2,3,4,5,6,7,8,9(顺序不能变)数字之间插入 + 或- 或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如 1+2+34-5+67-8+9 ...

  10. kafka概念使用简介注意点

    使用场景 大数据量.低并发.高可用.订阅消费场景 概念理解 分区个数与消费者个数 分区个数 = 消费者个数 :最合适状态 分区个数 > 消费者个数 :某些消费者要承担更多的分区数据消费 分区个数 ...