Python 是一门面向对象的程序设计语言,在1989年时被其创始人Guido van Rossum开发,希望Python成为ABC语言的优点的继承。
Python有着简洁、易读、可扩展、易维护的特点,其代码量一般为普通程序的二分之一到三分之一,能够提高开发者的效率。Python还有着面向对象且面向过程特点,使得整体的编程能更加灵活。它最大的特点还是他数量众多的第三方库,因为Python的开源特性,令它有许多的第三方库,在目前火热的爬虫、WEB等项目中,都有着上手度且完整度高的第三方库。
PyCharm
功能强大的Python编辑器,具备常规IDE的多项功能,内部还有SQLite数据库、数据库显示工具DB Navigator,同时接通Flask插件库,能够快速下载多种多样的Flask插件,有付费和免费两个版本,由于本次使用的框架为Flask,不依赖其内置的Django框架,所以此处的编译器为PyCharm community。
SQLite数据库
SQLite是一款轻量级数据库,以嵌入式为主要目的,正是因为这个目的,它对资源的占用量极小,下载后的占用空间不到5M,平常的内存需求也只需要几百k,同时它还能支持Windows、Linux等多种的操作系统,能与多种语言相互结合,它的管理配置与安装也都相对简易,并且有着非常适合Python项目的API,相较于MySQL来说,更加简约与小型化。
Flask技术
Flask是Python WEB的两大常用框架之一,使用Flask开发、部署和管理REST API,并使用易于阅读和理解的Python代码[13],以Werkzeug作为它的WSGI工具箱,以Jinja2作为它的模板引擎。
相对于同样大名鼎鼎的Django,Flask更为轻量,对于一些小型项目的制作,Flask能展现出它的扩展性,虽然它本身功能有限,但提供了非常灵活的插件库[14],并且还有着代码简洁、安全等特性。此外,由于它是Python中常用的两个框架之一,与设计好规则的Django不同,Flask能接受许多插件,并且有着开放的社区,其中许多用户将自己设计的扩展上传至插件库,使得Flask的可使用插件数量远多于Django。
Flask-SQLAlchemy、Flask-Migrate
若将Flask以MVC框架拆分,M(Model)一般由Flask-SQLAlchemy与Flask-Migrate两部分组成
SQLAlchemy是Flask扩展之一,通过ORM来操作数据库,除了正常的连接数据库之外,它为Flask提供了数据库创建语言,通常会被使用在models.py当中,在models.py中,通过一定的格式编写,即可实现与常规数据库相似的建表语言。
Migrate是Flask扩展之一,在通过SQLAlchemy建立models.py后,使用Migrate创建、迁移、更新数据库,Migrate会在创建的数据库中创建自己的版本表(alembic_version),每次改动并更新数据库后,版本表会更新自己所存储的版本号,当出现问题时,可以回溯会以往的版本。
Flask及其插件
若将Flask以MVC框架拆分,V(View)一般由多种多样的Flask组成,如Flask-Login、Flask_WTF等,它们能够使一部分常用功能的代码实现更为方便,例如Login之中提供了登录、登出、记住用户的登录状态的功能。
它们通常被使用在views.py及其他的视图当中,例如会给Flask_WTF设立forms.py来更多的存放使用表单的功能、给Flask_mail设立email.py来存放注册发送邮件验证的功能。只需要短时间的学习,就能快速的将他们运用到实际的项目当中。
Blueprint
若将Flask以MVC框架拆分,C(Controller)一般由蓝图Blueprint完成,Blueprint能够将Flask应用拆分为不同的组件,一个组件能代表其中的一个应用模块,将这些组件注册到蓝图当中,最终整合成一个完整的应用,就是蓝图Blueprint的主要功能,此外,蓝图还能用来重构代码和目录结构。
Jinja2与Flask-Bootstrap
以Flask框架制作项目,前端往往通过Jinja2和Flask-Bootstrap来完成。
Jinja2是Flask常用的模板引擎,且它的模板语言、模板规则与Django模板引擎类似,并在其之上拓展了一些语法和其他强大功能,除了普遍的灵活、迅捷的优势,最具特点的是它的沙箱执行模式,使得Jinja2有着比Django模板更高的安全性。
Flask-Bootstrap是Flask的扩展插件之一,这个扩展本质上就是将Bootstrap打包进去,除此之外也可以通过CDN进行资源引用,Flask-Bootstrap跟随Bootstrap的官方版本进行更新,很多时候都会在setup.py中固定它的版本。