Python Flask入门

目录
  • 主页
    • 分析代码:
    • 修改视图函数返回值
    • 修改 URL 规则
    • 修改视图函数名
  • 总结

追溯到最初,Flask 诞生于 Armin Ronacher 在 2010 年愚人节开的一个玩笑。后来,它逐渐发展成为一个成熟的 Python Web 框架,越来越受到开发者的喜爱。

Flask 是典型的微框架,作为 Web 框架来说,它仅保留了核心功能:请求响应处理和模板渲染。这两类功能分别由 Werkzeug(WSGI 工具库)完成和 Jinja(模板渲染库)完成。

主页

主页的 URL 一般就是根地址,即 / 。

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return 'Welcome to my web'
 if __name__=="__main__":
    app.run()

现在打开浏览器,访问 http://localhost:5000 即可访问我们的程序主页

分析代码:

1、首先我们从 flask 包导入 Flask 类,通过实例化这个类,创建一个程序对象app :

from flask import Flask
app = Flask(__name__)

2、接下来,我们要注册一个处理函数,这个函数是处理某个请求的处理函数,Flask官方把它叫做视图函数(view funciton)。所谓的“注册”,就是给这个函数戴上一个装饰器帽子。我们使用 app.route() 装
饰器来为这个函数绑定对应的 URL,当用户在浏览器访问这个 URL 的时候,就会触发这个函数,获取返回值,并把返回值显示到浏览器窗口:

@app.route('/')
def hello():
    return 'Welcome to my web'

提示:为了便于理解,你可以把 Web 程序看作是一堆这样的视图函数的集合:编写不同的函数处理对应 URL 的请求。
填入 app.route() 装饰器的第一个参数是 URL 规则字符串,这里的“/” 指的是根地址。我们只需要写出相对地址,主机地址、端口号等都不需要写出。所以说,这里的“/” 对应的是主机名后面的路径部分,完整 URL 就是 “http://localhost:5000/”。如果我们这里定义的 URL 规则是 “/hello” ,那么完整 URL 就是“http://localhost:5000/hello”。

整个请求的处理过程如下所示:

1.当用户在浏览器地址栏访问这个地址,在这里即 http://localhost:5000/

2. 服务器解析请求,发现请求 URL 匹配的 URL 规则是 / ,因此调用对应的处
理函数 hello()

3. 获取 hello() 函数的返回值,处理后返回给客户端(浏览器)

4. 浏览器接受响应,将其显示在窗口上

修改视图函数返回值

首先,你可以自由修改视图函数的返回值,返回值作为响应的主体,默认会被浏览器作为 HTML 格式解析,所以我们可以添加一个 HTML 元素标记:

@app.route('/')
def hello():
    return '<h1>Hello Totoro!</h1><img src="http://helloflask.com/totoro.gif">'

保存修改后,只需要在浏览器里刷新页面,你就会看到页面上的内容也会随之变化。

修改 URL 规则

另外,你也可以自由修改传入 app.route 装饰器里的 URL 规则字符串,但要注意以斜线 / 作为开头。比如:

@app.route("/HelloWorld")
def hello_word():
    return "hello world"

保存修改,这时刷新浏览器,则会看到一个 404 错误提示,提示页面未找到(Page Not Found)。这是因为视图函数的 URL 改成了 “/HelloWorld” ,而我们刷新后访问的地址仍然是旧的 “/” 。如果我们把访问地址改成“http://localhost:5000/home”,就会正确看到返回值。

一个视图函数也可以绑定多个 URL,这通过附加多个装饰器实现,比如:

@app.route('/')
@app.route('/index')
@app.route("/HelloWorld")
def hello_word():
    return "hello world"

现在无论是访问 “http://localhost:5000/”、“http://localhost:5000/HelloWorld” 还是“http://localhost:5000/index” 都可以看到返回值。

在前面,我们之所以把传入 app.route 装饰器的参数称为 URL 规则,是因为我们也可以在 URL 里定义变量部分。比如下面这个视图函数会处理所有类似“/user/” 的请求:

app.route('/user/<name>')
def user_page(name):
    return 'User page'

不论你访问 “http://localhost:5000/user/Tom”,还是“http://localhost:5000/user/Jerry”,都会触发这个函数。通过下面的方式,我们也可以在视图函数里获取到这个变量值:

@app.route('/user/<name>')
def user_page(name):
    return 'User: %s' % name

修改视图函数名

最后一个可以修改的部分就是视图函数的名称了。首先,视图函数的名字是自由定义的,和 URL 规则无关。和定义其他函数或变量一样,只需要让它表达出所要处理页面的含义即可。

除此之外,它还有一个重要的作用:作为代表某个路由的端点(endpoint),同时用来生成 URL。对于程序内的 URL,为了避免手写,Flask 提供了一个 url_for函数来生成 URL,它接受的第一个参数就是端点值,默认为视图函数的名称:

from flask import url_for, Flask
 app = Flask(__name__)
@app.route('/')
def hello():
    return 'Hello'
@app.route('/user/<name>')
def user_page(name):
    return 'User: %s' % name
@app.route('/test')
def test_url_for():
    print(url_for('hello'))  # 输出:/
    # 注意下面两个调用是如何生成包含 URL 变量的 URL 的
    print(url_for('user_page', name='Tom'))  # 输出:/user/Tom
    print(url_for('user_page', name='Jerry'))  # 输出:/user/Jerry
    print(url_for('test_url_for'))  # 输出:/test
    # 下面这个调用传入了多余的关键字参数,它们会被作为查询字符串附加到 URL后面。
    print(url_for('test_url_for', number=2))  # 输出:/test?number=2
    return 'Test page'
if __name__=="__main__":
    app.run()

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • python flask框架快速入门

    Flask 本身相当于一个内核,比如可以用 Flask 扩展加入ORM.窗体验证工具,文件上传.身份验证等.Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL. 其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2.这两个也是 Flask 框架的核心. Flask常用扩展包: Flask-SQLalchemy:操作数据库: Flask-script:插入脚本: Flask-migrate:管理迁移数据库: Flask-Session:S

  • python框架flask入门之路由及简单实现方法

    路由 简单来说,路由就是一个url到函数的映射,通过路由规则,可以使得url被指定的函数进行处理解析. 我们都知道现在的web系统的URL都是可以自定义的,也就是我们可以指定url和具体的业务控制器相关联,而这些就是通过路由来实现的. flask中集成了路由处理模块,我们只需要简单地使用route装饰器就可以实现路由匹配. @app.route('/') def index(): return 'Index Page' @app.route('/hello') def hello(): retu

  • Python中Flask-RESTful编写API接口(小白入门)

    1.API接口:hello world 案例 from flask import Flask from flask_restful import Api, Resource app = Flask(__name__) api = Api(app) class HelloWorld(Resource): def get(self): return {'hello': 'world'} api.add_resource(HelloWorld, '/') if __name__ == '__main_

  • python框架flask入门之环境搭建及开启调试

    传说中的python web开发有2大宝器,一个是倚天剑,一个就是屠龙刀.django作为倚天剑已经被大众所熟知,今天我们就来看看flask这把屠龙宝刀. 简介 Flask 是依赖Jinja模板引擎和 WerkzeugWSGI 套件的一套web微框架. 它是小巧的,它是符合wsgi标准的,它是优雅的,也是容易上手的框架,可以说谁掌握了flask这把屠龙刀,谁就可以号令python的web江湖. 安装 包管理工具的出现使得软件安装变得异常简单和容易.python中的包管理工具是pip.一般这个工具

  • 在Python的Flask框架中使用模版的入门教程

     概述 如果你已经阅读过上一个章节,那么你应该已经完成了充分的准备工作并且创建了一个很简单的具有如下文件结构的Web应用:   microblog     |-flask文件夹     |-<一些虚拟环境的文件>     |-app文件夹     |  |-static文件夹     |  |-templates文件夹     |  |-__init__.py文件     |  |-views.py文件     |-tmp文件夹     |-run.py文件 亲,想要运行这个程序么?那就运行这

  • Python的Flask框架中Flask-Admin库的简单入门指引

    Flask-Admin是一个功能齐全.简单易用的Flask扩展,让你可以为Flask应用程序增加管理界面.它受django-admin包的影响,但用这样一种方式实现,开发者拥有最终应用程序的外观.感觉和功能的全部控制权. 本文是关于Flask-Admin库的快速入门.本文假设读者预先具有一些Flask框架的知识. 介绍 初始化 增加视图 身份验证 生成URL 模型视图 文件管理 介绍 这个库打算做到尽可能的灵活.并且开发者不需要任何猴子补丁就可以获得期望的功能. 这个库使用一个简单而强大的概念-

  • Python Flask入门之模板

    目录 模板基本语法 编写主页模板 准备虚拟数据 渲染主页模板 总结 在一般的 Web 程序里,访问一个地址通常会返回一个包含各类信息的 HTML 页面.因为我们的程序是动态的,页面中的某些信息需要根据不同的情况来进行调整,比如对登录和未登录用户显示不同的信息,所以页面需要在用户访问时根据程序逻辑动态生成. 我们把包含变量和运算逻辑的 HTML 或其他格式的文本叫做模板,执行这些变量替换和逻辑计算工作的过程被称为渲染(模板渲染引擎--Jinja2). 按照默认的设置,Flask 会从程序实例所在模

  • Python Flask入门

    目录 主页 分析代码: 修改视图函数返回值 修改 URL 规则 修改视图函数名 总结 追溯到最初,Flask 诞生于 Armin Ronacher 在 2010 年愚人节开的一个玩笑.后来,它逐渐发展成为一个成熟的 Python Web 框架,越来越受到开发者的喜爱. Flask 是典型的微框架,作为 Web 框架来说,它仅保留了核心功能:请求响应处理和模板渲染.这两类功能分别由 Werkzeug(WSGI 工具库)完成和 Jinja(模板渲染库)完成. 主页 主页的 URL 一般就是根地址,即

  • Python Flask 搭建微信小程序后台详解

    前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个人觉得的微信小程序与后台的交互有点像ajax,所以有ajax开发经验的同学开发小程序应该很容易上手,因为本文着重讲解后台程序的搭建,所以,微信小程序的前端开发将一笔带过,有兴趣学习小程序前端语言的同学可移步网易云课堂的一套快速入门课程<轻松玩转微信小程序>. 分三步讲解微信小程序与Python后台

  • Flask 入门Web 微框架Hello Flask

    目录 一.安装及简单Flask 1.创建示例程序 2.代码分解 2.1 导入并实例化了Flask类 2.2 注册路由 2.3启动Web服务器 前言: Flask 是一个 Python 实现的 Web 微框架,之所以称之为微框架,是因为 Flask 核心简单且易于扩展,有两个主要依赖,WSGI工具集:Werkzeug和模板引擎:Jinja2,Flask 只保留了 Web 开发的核心功能,其他的功能都由外部扩展来实现,比如集成数据库.表单认证.文件上传.各种各样的开放认证技术等功能.正是因为 Fla

  • Python Flask实现图片上传与下载的示例详解

    目录 1.效果预览 2.新增逻辑概览 3.tuchuang.py 逻辑介绍 3.1 图片上传 3.2 图片合法检查 3.3 图片下载 4.__init__.py 逻辑介绍 5.upload.html 介绍 5.1 upload Jinja 模板介绍 5.2 upload css 介绍(虚线框) 5.3 upload js 介绍(拖拽) 1.效果预览 我们基于 Flask 官方指导工程,增加一个图片拖拽上传功能,效果如下: 2.新增逻辑概览 我们在官方指导工程上进行增加代码,改动如下: 由于 fl

  • Flask入门教程实例:搭建一个静态博客

    现在流行的静态博客/网站生成工具有很多,比如 Jekyll, Pelican, Middleman, Hyde 等等,StaticGen 列出了目前最流行的一些静态网站生成工具. 我们的内部工具由 Python/Flask/MongoDB 搭建,现在需要加上文档功能,写作格式是 Markdown,不想把文档放到数据库里,也不想再弄一套静态博客工具来管理文档,于是找到了 Flask-FlatPages 这个好用的 Flask 模块.熟悉 Flask 的同学花几分钟的时间就可以用搭建一个简单博客,加

  • Python简明入门教程

    本文实例讲述了Python简明入门教程.分享给大家供大家参考.具体如下: 一.基本概念 1.数 在Python中有4种类型的数--整数.长整数.浮点数和复数. (1)2是一个整数的例子. (2)长整数不过是大一些的整数. (2)3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4. (4)(-5+4j)和(2.3-4.6j)是复数的例子. 2.字符串 (1)使用单引号(') (2)使用双引号(") (3)使用三引号('''或"&q

随机推荐