Flask系列教程(一)-----------入门
Flask是一个基于Python的web框架,它的设计目的是提供Web开发所需的最小功能子集。
Flask与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理等功能库,以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定。
这种系统带来的主要好处是:开发者能够使用他们想用的任何方式和工具,去设计他们的应用架构。另外,对于一些常见的通用功能,Flask没有以某种特定方式去实现,这意味着在Flask中,对标准库的使用会比其他框架里多,这保证了通用功能的稳定性及针对其他Python程序员的可读性。由于Flask社区十分庞大,所以该社区提供的添加通用功能的方式非常多。所以通过本系列教程,了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于,如果不需要那些额外的功能,就不用引入它们,这样我们的应用才会保持简洁、轻量。
这种系统的最大弊端是,大部分新的Flask用户不知道如何正确地规划大型应用的结构,最后弄出一大堆让人难以理解和维护的代码。所以本教程另一个重点是如何为Flask应用创建模型/视图/控制器(MVC)架构。
MVC体系在最初被发明时,主要用来设计桌面应用的用户界面。它将数据处理(model),交互逻辑(controller)和用户界面(view)隔离成三层不同的组件。
这三层组件的隔离,使得程序员不用为每个网页重新实现一遍相同的功能,而是只要重用那些代码。比如,若是没有把处理数据的代码拆分到单独的函数中,那么我们不得不在每个页面的渲染函数里,把同样的数据库连接代码和SQL查询代码都写一遍。
我们将使用git做为版本控制软件,开发环境为ubuntu.python版本为3.4.3
安装flask
使用pip安装,由于是在python3环境中,所以使用pip3.
pip3 install flask
使用git做版本管理
创建工程目录
mkdir flask_tutorials
切换到工程目录
cd flash_tutorilas
初始化版本库
git init
创建版本库过滤文件
touch .gitignore
向.gitignore文件中写入以下内容,过滤env目录,python的编译文件:
cat .gitignore
env/
*.pyc
开始我们的项目
config.py:
class Config(object):pass class ProdConfig(Config):pass class DevConfig(Config):DEBUG = True
main.py:
from flask import Flask from config import DevConfigapp = Flask(__name__) app.config.from_object(DevConfig)@app.route('/') def home():return '<h1>Hello World!</h1>' if __name__ == '__main__':app.run()
对于一些了解Flask API的读者来说,这个程序非常基础,它只是在我们访问http://127.0.0.1:5000的时候,在浏览器中显示一行"Hello World!"。另外,Flask用户可能很不熟悉的一个地方是,这里使用了config.from_object,而不是app.confing['DEBUG']。使用from_object是因为未来我们会加入很多配置项,如果要在不同的配置之间切换,那么手动去改每个变量是一件烦琐乏味的事。
提交我们的代码
git add --all
git commit -m "your comment"
启动web服务
zhangxa@ubuntu:~/python/flask_tutorials$ python3 main.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: 267-148-615
使用flask-script
Flask有众多扩展,我们将首先使用Flask Script扩展。使用它可以创建命令,并在Flask的应用上下文中执行,因为这样才能对Flask对象进行修改。
Flask Script自带了一些默认的命令,可以运行服务器或者开启带应用上下文的Python命令行。
安装
pip3 install flask-script
使用
先创建一个简单的manage.py脚本。
manage.py:
首先,导入Flask Script对象,代码如下:
from flask_script import Manager, Server from main import app 然后把你的app传给Manager对象,以初始化Flask Script: manager = Manager(app)现在我们来添加一些命令。这里运行的服务器跟通过main.py运行的普通开发服务器是一样的。make_shell_context函 数会创建一个Python命令行,并且在应用上下文中执行。返回的字典告诉Flask Script在打开命令行时进行一些默认 的导入工作。 manager.add_command("server", Server())@manager.shell def make_shell_context():return dict(app=app)通过manage.py运行命令行在将来会十分必要,因为一些Flask扩展只有在Flask应用对象被创建之后才会被初始化。直接 运行默认的Python命令行会令这些扩展返回错误。然后,在文件结尾添加如下代码,这是Python的标准方式,用来限制仅在用户直接运行文件的时候,才执行上面的 代码:
if __name__ == "__main__":manager.run()
现在你可以这样来运行开发环境服务器:Z:\python\flask_tutorials>python manage.py server * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger pin code: 273-062-909 以及使用命令行Z:\python\flask_tutorials>python manage.py shell#我们来看下app有没有被正确导入>>> app<Flask 'main'>>>>
总结
现在我们已经搭建了开发环境,可以继续在Flask里面实现更高级的特性了。
Flask系列教程(一)-----------入门相关推荐
- Python框架Flask系列教程(1)——基础-黄勇-专题视频课程
Python框架Flask系列教程(1)--基础-4431人已学习 课程介绍 从初级讲解Flask开发网站.涉及到的知识点包括:URL和视图.Jinja2模版.SQLAlchemy数据 ...
- 【全栈接口测试进阶系列教程】入门到入职的jmeter接口测试工具实战,接口测试步骤,正则表达式jsonpath,断言,接口加密,beanshell,jdbc,jmeter+ant+jenkins
目录 [本文简介看之前请详细的看完介绍] 本文是全网首发的[全栈接口测试进阶系列教程]jmeter接口测试工具从入门到入职, 接口系列包含 接口测试系列包含所有的接口测试工具入门到入职,如果你喜欢的话 ...
- Web阅读器开发系列教程(入门篇)
作者:Sam 前言 最近我在慕课网发布了两门关于Web阅读应用开发的课程,采用Vue全家桶开发.免费课是入门级课程,初步实现了一个阅读器.实战课是进阶课程,实现了一个高性能的互联网阅读应用.两个项目都 ...
- 报表 labview_【LabVIEW懒人系列教程小白入门】1.3LabVIEW数据类型
上期作业解答: 如何对齐控件(动图) 第一种方法: 第二种方法: 第三种方法: 第四种方法: 大家尝试至少用第一种方法编写出该题. 作业讲解结束 labview中需要熟悉的控件类型有: 基本数据类型: ...
- 【LabVIEW懒人系列教程-小白入门】1.13LabVIEW程序结构之事件结构
上期1.2作业讲解: 下面是效果演示: 今日讲解程序框图中的事件结构运用方式, 事件结构必须要存在超时事件分支,否则程序会报错且无法执行 顾名思义,事件结构就是满足某个事件执行对应事件的功能分支,事件 ...
- 【LabVIEW懒人系列教程-小白入门】1.15LabVIEW程序结构之跑马灯
上期1.14作业讲解: 本期教大家如何利用程序结构编写小程序<跑马灯> 程序要求,多数布尔灯依次排序,按照从左往右的顺序进行亮灭操作. 如图: 方法①/利用While循环组合顺序结构实现 ...
- 【LabVIEW懒人系列教程-小白入门】1.16LabVIEW程序结构之小试身手
上期1.15作业讲解: <分数序列求和> For循环组合移位寄存器实现计算: 本期带来两个习题,主要目的:运用前期所学知识点进行反复练习,提高对于函数运用的熟练度,了解Labview程序组 ...
- 【LabVIEW懒人系列教程-小白入门】1.2LabVIEW前面板控件讲解
上次课程作业编写:d=a+b+c 前面板创建4个控件:数值型输入控件:a,b,c:数值型显示控件d ctrl+e 切换到程序框图界面,添加2个 "+"算法,然后连线,a,b,c,d ...
- 【建议收藏】Flask系列教程(三)SQLAlchemy数据库
数据库是一个网站的基础,在Flask中可以自由的使用MySQL.PostgreSQL.SQLite.Redis.MongoDB来写原生的语句实现功能,也可以使用更高级别的数据库抽象方式,如SQLAlc ...
最新文章
- 青龙羊毛——更新日志(2022-04-07更新)
- 并发之AQS原理(一) 原理介绍简单使用
- 剑指offer之数组中的逆序对
- Leetcode周赛复盘——第 276 场力扣周赛
- 项目七samba服务器,Centos 7 配置Samba服务器
- php mysql自动反转义_ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法...
- 【FIRST USE】第一次用git把代码上传到github
- Delphi Web前端开发教程(1):基于TMS WEB Core框架
- [状压dp] 玉米田(状压dp)
- FMS视频在线采集系统
- 建网站应该买什么云服务器,建网站应该买什么云服务器
- linux系统sip1 login,1.1.1.1 SIP终端节点配置
- 从C++11到C++23(一) C++20圆周率、常数e和常见对数
- Android常用设置
- C++ 多态性 (polymorphism)
- 有一张厚度为0.1mm的纸,假设它足够大,重复将其对折,问对折多少次之后,其厚度可达(再对折一次就超过)珠穆朗玛峰的高度?(C语言)
- SPSS是什么?SPSS软件的功能有哪些?
- Vue + Element-ui 实现table表格 数据相同项合并
- Redis用来干嘛的?
- 如何运用SCQA发现问题?