文档章节

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

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:28
字数 1651
阅读 10
收藏 0
点赞 0
评论 0

目录

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. 参考文档

本实验课程参考文档:

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 Flask

app = 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 app

app.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!


实验效果图

本文转载自:http://www.jianshu.com/p/836ea309c81f

共有 人打赏支持
AllenOR灵感
粉丝 10
博文 2139
码字总数 82983
作品 0
程序员
回应「如何评价《python web开发实战》?」的评价

这篇文章是「洗地」帖。 知乎上有一个问题 如何评价《python web开发实战》?感谢几位同学邀请,现在距离出版已经半年了,今天突然想起来回应下这个回答,发现想说的还挺多,直接写一篇专栏吧...

董伟明 ⋅ 2017/03/28 ⋅ 0

我的第一本 gitbook: Flask Web 开发笔记

书籍地址 head-first-flask Flask 简介 Python 中有许多 Web 开发框架,比如 Django,Flask,Tornado,Bottle 和 web.py 等,其中,Django 可以说是一个全能型(all in one)的框架,自带管理...

funhacks ⋅ 2017/11/29 ⋅ 0

Python进阶(五十)-解析Flask运行原理

Python进阶(五十)-解析Flask运行原理   在学习Python Web开发过程中,掌握了Flask的开发方法。经过一段时间的视频学习,回过头来对Flask的运行原理做一简要解析,以增强自己对Flask的了解。...

sunhuaqiang1 ⋅ 2017/05/30 ⋅ 0

使用PyCharm进行Python远程开发

本文翻译自 Feature Spotlight: Python remote development with PyCharm,讲述如何使用PyCharm进行Python远程开发。全文系作者原创,仅供学习参考使用,转载授权请私信联系,否则将视为侵权...

郗南枫 ⋅ 05/20 ⋅ 0

如果你也想写Flask

上次我在编程派发表了一篇关于如何备份文件至七牛的文章,不说好坏,文章发表出去之后我思考了很多,最重要的一点是:如果我是读者,我会愿意阅读完整这篇文章吗? 如果自己是读者该怎样去文...

涩女郎 ⋅ 2016/11/05 ⋅ 0

【Python搞搞轻量Blog】第一发 Flask入门

大家好,我是仙宇(其实就是咸鱼) 我发现很多小伙伴一直想着有自己的一个博客,而且还想自己写一个。 你们都这么爱折腾,我就给你们搞一个轻量级级别的Blog. 准备 我们要用Python来写一套轻量...

仙宇 ⋅ 03/30 ⋅ 0

python-成长之路

一系列python方面有价值的参考/跟python有关的东西 http://www.path8.net/tn/archives/6017 Tools PyCharm – 来自JetBrains的强大的IDE Python Tools for Visual Studio Eclipse + pydev Ap......

_Mr_Computer_ ⋅ 2016/07/01 ⋅ 0

社区模板的 python 后端实现 - PyFly

项目介绍 PyFly 是 Flask + Layui Fly Template实现的一个社区项目,使用flask-admin实现了简单的后台管理功能,数据库使用Mongodb,前台实现功能:用户注册、登录、邮件激活、发帖、回帖、...

981764793 ⋅ 04/28 ⋅ 0

编译新一代PostgreSQL管理工具 pgAdmin4

平台:Fedora 22 x8664 网页:http://git.postgresql.org/gitweb/?p=pgadmin4.git;a=summary 我自己的环境是做 PostgreSQL 开发用的,有很多依赖包可能已经安装,因此对于读者的具体环境,下...

有理想的猪 ⋅ 2016/04/15 ⋅ 3

981764793/PyFly

PyFly 项目介绍 Flask + Layui Fly Template实现的一个社区项目,使用flask-admin实现了简单的后台管理功能,数据库使用Mongodb,前台实现功能:用户注册、登录、邮件激活、发帖、回帖、点赞...

981764793 ⋅ 04/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部