作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


目录

Flask开发轻博客(一):欢迎来到 Flask 的世界

Flask开发轻博客(二):Flask 模板

Flask开发轻博客(三):Flask 的 Web 表单

Flask开发轻博客(四):数据库

Flask开发轻博客(五):用户登录

Flask开发轻博客(六):用户首页和发布博客

Flask开发轻博客(七):分页


一、实验说明

1. 环境介绍

本实验环境采用Ubuntu Linux桌面环境,实验中会用到桌面上的程序:

  1. 命令行终端: Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令
  2. Firefox及Opera:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的HTML/JS页面即可
  3. gvim:非常好用的Vim编辑器,最简单的用法可以参考课程Vim编辑器
  4. gedit及Brackets:如果您对gvim的使用不熟悉,可以用这两个作为代码编辑器,其中Brackets非常适用于前端代码开发

2. 参考文档

本实验课程参考文档:

  • Flask 中文文档
  • Flask 大型教程项目
  • Flask 大型教程项目英文原版

3. 安装 Flask

我们可以使用 pip 来安装需要的包。

# 更新软件包列表
$ sudo apt-get update
# 使用 pip 从阿里云软件源下载 flask 及其扩展
$ pip install -i http://mirrors.aliyuncs.com/pypi/simple flask flask-login flask-openid flask-mail sqlalchemy flask-sqlalchemy sqlalchemy-migrate flask-whooshalchemy flask-wtf pytz flask-babel flup

二、欢迎来到 Flask 的世界

Flask 是一个用于 Python 的微型网络开发框架。基于 WerkzeugWSGI 工具箱和 Jinja2 模板引擎。 Flask也被称为microframework,因为它使用简单的核心,用加载扩展的方式增加其他功能。

Flask 没有默认使用的数据库、窗体验证工具。但是,Flask 保留了扩增的弹性,可以用Flask-extension(也就是前面下载提到的flask扩展)加入这些功能:ORM、窗体验证工具、文件上传、开放式身份验证技术。这使得 flask 成为具有高度扩展性和灵活性的 python web 框架。

1.为什么要学习Flask?

  1. 快速搭建:正如上面所说,Flask 是一个 web “微”框架,我们使用 Flask 可以快速的搭建我们的网站,在互联网时代,一个好的idea不能尽快的展现在人们的面前,确实是令开发者很苦恼的事情。
  2. 容易学习: 学完了 Python 基础之后想要接触 web 开发。 Flask 非常易于使用,同时,稍后你能看到示例代码所展示的那样,是一个十分简单的框架。你的大脑很自然地就适应它了,使用 Flask ,可以更快地开发。
  3. 非常活跃、生机勃勃的社区:很多人会推荐你从 Flask 入手, Flask 是最好的现代 web 开发的 python 框架之一。
“微”是什么意思?

缺省情况下, Flask 不包含数据库抽象层、表单验证或者其他已有的库可以处理的东西。然而, Flask 通过扩展为你的应用支持这些功能,就如同这些功能是 Flask 原生的一样。有无数的扩展可以支持数据库整合、表单验证、上传处理和各种开放验证等等。Flask 可能是“微小”的,但绝不简单,可以满足各种生产需要。

三、体验 Flask

有一点准备工作要做,既然 Flask 是一个 MVC 的 web 框架,我们就得按照 MVC 的模式来对代码文件分层。

1. 首先我们创建一个工作的文件目录
$ mkdir -p micblog/app
$ mkdir -p micblog/app/static
$ mkdir -p micblog/app/templates

Tips: 我们的应用程序包是放置于 app 文件夹中。子文件夹 static 用来存放静态文件例如图片,JS 文件以及样式文件。子文件夹 templates 是存放模板文件类的html文件。

2. 接下来我们进入到 app 文件夹中,并创建 __init__.pyviews.py
 $ cd micblog/app$ touch __init__.py$ touch views.py
3. 让我们开始为我们的 app 包(文件 app/__init__.py)通过使用命令 vi __init__.py 创建一个简单的初始化脚本
#!/usr/bin/env python
# -*- coding: utf-8 -*-from flask import Flaskapp = Flask(__name__)from app import views

上面的脚本简单地创建应用对象,接着从应用app中导入视图模块views文件内容,该模块我们暂未编写。

视图是响应来自网页浏览器的请求的处理器。在 Flask 中,视图是以 Python 函数的形式表示。每一个视图函数是映射到一个或多个请求的 URL。

4. 让我们编写第一个视图函数(文件 app/views.py )

#!/usr/bin/env python
# -*- coding: utf-8 -*-from app import app@app.route('/')
@app.route('/index')
def index():return "Hello, World!"

其实这个视图是非常简单,它只是返回一个字符串 Hello, World!,并通过映射的方式使得该字符串在客户端的网页浏览器上显示。两个 route 装饰器创建了从网址 / 以及 /index 到这个函数的映射。

能够完整工作的 Web 应用程序的最后一步是创建一个脚本,启动我们的应用程序的开发 Web 服务器。让我们称这个脚本为 run.py ,并把它置于 micblog 目录下。

5. micblog/run.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-from app import appapp.run(debug = True, port = 9999)

这个脚本简单地从我们的 app 包中导入 app 变量并且调用它的 run 方法来启动服务器。请记住 app 变量中含有我们在之前创建的 Flask 实例。其中我们开启了debug 模式(用于在线调试代码),并指定了访问端口为 9999(防止默认的 5000 被占用,你也可以随意指定其他端口号)。

6. python run.py 将服务器运行起来

在服务器初始化后,它将会监听 9999(默认的是 5000) 端口等待着连接。现在打开你的网页浏览器输入如下 URL:

http://127.0.0.1:9999

另外也可以使用:

http://127.0.0.1:9999/index

你看清楚了路由映射是如何工作的吗?第一个URL映射到 /,而第二个URL映射到 /index 。这两个路由都关联到我们的视图函数,因此它们的作用是一样的。如果你输入其它的网址,你将会获得一个错误,因为只有这两个URL 映射到视图函数。你可以通过 Ctrl-C 来终止服务器。

7. 最终效果图

当你运行成功后,你能在网页中看到 Hello, World!

Flask开发轻博客(一):欢迎来到-Flask-的世界相关推荐

  1. Flask开发轻博客(一):欢迎来到 Flask 的世界

    目录 Flask开发轻博客(一):欢迎来到 Flask 的世界 Flask开发轻博客(二):Flask 模板 Flask开发轻博客(三):Flask 的 Web 表单 Flask开发轻博客(四):数据 ...

  2. 用flask开发个人博客(37)—— 使用Flask-pagedown实现博客文章预览的功能

    一.引言 本文主要讨论的内容,是将我们写的纯文本的博客文章,使用Flask-pagedown模块,将文本转换成html富文本数据,并在浏览器上显示,类似于博客文章的预览功能.PageDown是用Jav ...

  3. Python Flask框架-开发简单博客-认证蓝图

    作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他所拥有的.可以不学无术,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WEB安全.网络攻防 ...

  4. 用 Flask 来写个轻博客 (37) — 在 Github 上为第一阶段的版本打 Tag

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 第一阶段结语 打 Tag 前文列表 用 Flask 来写个轻博客 (1 ...

  5. 用 Flask 来写个轻博客 (35) — 使用 Flask-RESTful 来构建 RESTful API 之四

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 POST 请求 身份认证 测试 前文列表 用 Flask 来写个轻博客 ...

  6. 用 Flask 来写个轻博客 (28) — 使用 Flask-Assets 压缩 CSS/JS 提升网页加载速度

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 Flask-Assets 将 Flask-Assets 应用 ...

  7. 用 Flask 来写个轻博客 (12) — M(V)C_编写和继承 Jinja 模板

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 使用 Bootstrap 编写 Jinja 模板文件 继承一 ...

  8. 用 Flask 来写个轻博客 (9) — M(V)C_Jinja 语法基础快速概览

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 Jinja 变量名 注释 控制语句 if 语句 循环 过滤器 ...

  9. 用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 Alembic 查看指令 manager db 的可用选项 ...

最新文章

  1. 看一名 KDE 开发者如何使用 C++17 为项目提升巨大速度
  2. 使用 rocketmq-spring-boot-starter 来配置、发送和消费 RocketMQ 消息
  3. 关于Operation 的那些事
  4. php manager iis 8,PHPManager2下载
  5. (1.2)HarmonyOS鸿蒙config.json
  6. LINUX装魂斗罗游戏,魂斗罗战甲1-支援形态装置搭配思路及攻略
  7. Hibernate教程
  8. 使用 Adobe AIR 管理 WordPress 评论
  9. MATLAB里sortrows是什么意思,Matlab中sortrows函数解析
  10. 中英文对照 —— 生物学基本概念
  11. Autolayout屏幕适配——代码实现(苹果公司 / VFL语言 / 第三方框架Masonry)
  12. JBOSS最大连接数配置和jvm内存配置
  13. Map遍历KeySet()和EntrySet/ Map.forEach的性能分析
  14. 算法面试题(数据结构)
  15. 汇编语言王爽第四版(Debug与实验一)
  16. 计算机软件工程职业道德论文,软件工程职业道德论文_软件工程_软件工程就业前景...
  17. 正则表达式-验证手机号与邮箱
  18. 计算机多媒体培训总结,教师多媒体培训心得体会3篇
  19. 奇虎360起诉瑞星和中关村在线
  20. javax.el.PropertyNotFoundException——属性未找到

热门文章

  1. 牛顿法与拟牛顿法学习笔记(一)牛顿法
  2. cdq分治和整体二分
  3. 网站图片优化SEO方法有哪些
  4. ibaanalyzer使用教程_ibaanalyzer中文手册
  5. 你可能不知道的GDB命令
  6. 3D方面的一些英文词汇解释
  7. js 中的evel 函数
  8. html中tabindex属性是啥意思
  9. OpenStack常用运维命令手册-V1.0-黑夜青儿
  10. Telegraf 简单使用介绍