flask-带你快速入门

一个小应用

创建一个Python文件:hello.py

from flask import Flask
app = Flask(__name__)   #app是程序实例,一个项目只能有一个程序实例@app.route(‘/‘)   #路由装饰器def hello_world():  #视图函数
    return ‘Hello World!‘  #返回一个字符串if __name__ == ‘__main__‘:
     app.run()1234567812345678

python解释器来运行

$ python hello.py
* Running on http://127.0.0.1:5000/1212

上面代码

  1. 首先,我们导入了 Flask 类。这个类的实例将会是我们的 WSGI 应用程序
  2. 接下来,我们创建一个该类的实例,第一个参数是应用模块或者包的名称。 如果你使用单 
    块(如本例),你应该使用 name ,因为模块的名称将会因其作为单独应用启动还是作 
    块导入而有不同( 也即是 ‘main’ 或实际的导入名)。这是必须的,这样 Flask 才知道 
    去找模板、静态文件等等。详情见 Flask的文档。
  3. 然后,我们使用 route() 装饰器告诉 Flask 什么样的URL 能触发我们的函数。
  4. 这个函数的名字也在生成 URL 时被特定的函数采用,这个函数返回我们想要显示在用户浏 
    的信息。
  5. 最后我们用 run() 函数来让应用运行在本地服务器上。 其中 if name ==’main‘: 确保服 
    只会在该脚本被 Python 解释器直接执行的时候才会运行,而不是作为模块导入的时候。

关闭服务器,按 Ctrl+C。

# 修改调用 run() 的方法使你的服务器公开可用
app.run(host=‘0.0.0.0‘)123123

调试代码

虽然 run() 方法适用于启动本地的开发服务器,但是你每次修改代码后都要手动重启它。这样并不够 
优雅,而且 Flask 可以做到更好。如果你启用了调试支持,服务器会在代码修改后自动重新载入,并 
在发生错误时提供一个相当有用的调试器。就算出错了,也不用重新启动。 
有两种途径来启用调试模式。一种是直接在应用对象上设置:

app.debug = True
app.run()1212

另一种是作为 run 方法的一个参数传入:

app.run(debug=True)11

两种方法的效果完全相同。

路由装饰器

这里是一些基本的例子:

@app.route(‘/‘) def index():   
     return ‘Index‘@app.route(‘/hello/‘) def hello():    
    return ‘<h1>Hello world!</h1>‘12345671234567

客户端(例如 Web 浏览器)把请求发送给 Web 服务器, Web 服务器再把请求发送给 Flask程序实例。程序实例需要知道对每个 URL 请求运行哪些代码,所以保存了一个 URL 到Python 函数的映射关 系。处理 URL 和函数之间关系的程序称为路由。

在 Flask程序中,定义路由使用 app.route修饰器,route()装饰器把一个函数绑定到对应的URL上。

函数的返回值叫响应,是客户端接收到的内容。如果客户端是 Web 浏览器, 响应就是显示给 用户查看的文档。

像index()这样的,称为是视图函数。视图函数返回的响应可以是包含html的简单字符串,也可以是复杂的表单。

变量规则

@app.route(‘/user/<name>‘)def showUserName(name):    
    return "User %s" %[email protected](‘/post/<int:post_id>‘) def showPostId(post_id):    
    return "Post %d" %post_id12345671234567

很多URL地址都包含可变部分。flask中,只需在route修饰器中使用特殊的句法

尖括号的内容就是动态部分,任何能匹配静态部分的URL都会映射到这个路由上。调用视图函数的时候,flask会将动态部分作为参数传入函数中。

路由中的动态部分默认是使用字符串,不过也可以使用类型定义。。例如,路由 /user/只会匹配动 态片段 id 为整数的 URL。 Flask 支持在路由中使用 int、 float 和 path 类型。path 类型也是字符串,但不把斜线视作分隔符,而将其当作动态片段的一部分。

变量规则就是处理动态信息的。 
【注意】

  • app.route()函数中尖括号里面的是变量名,必须和视图函数的形参名一致
  • 如果是int或者float类型,不能直接return。必须转换为字符串格式才可以,否则会报错: TypeError: ‘int’ object is not callable

重定向和错误

  • 用redirect()函数把用户重定向到其他地方
  • 用abort()函数放弃请求并返回错误代码
@app.route(‘/redir/‘) def redir():    
    return redirect(‘/login/‘)@app.route(‘/login/‘) def login():   
     abort(401)1234567812345678

用户会从/redir/重定向到一个不能访问的页面 (401 意味着禁止访问)。

造URL

用url_for()来给指定的函数生成url。它接受函数名作为第一个参数,也接受对应URL规则的变量部分的命名参数。

@app.route(‘/world/‘) def world():    # return redirect(‘/hello/‘)    # return redirect(url_for(‘hello‘))    # return redirect(url_for(‘showUserName‘,name = ‘liusheng‘))    return redirect(url_for(‘showPostId‘, post_id = 100)) # 注意这里的100可以是字符串也可以是整型12345671234567

使用url_for()生成 URL 的好处: 
- 允许一次性修改 URL,而不用到处边找边改。 
- URL 构建会转义特殊字符和 Unicode 数据,免去你很多麻烦。

使用Flask-Script支持命令行选项

Flask-Script是一个Flask扩展,为Flask程序添加了一个命令行解析器。Flask-Script 自带了 一组常用选项,而且还支持自定义命令。

Flask-Script 扩展使用 pip 安装:

(venv) $ pip install flask-script11

把命令行解析功能添加到 hello.py 程序中时需要修改的地方:

from flask_script import Manager 
manager = Manager(app)if __name__ == ‘__main__‘:    
    manager.run()1234512345

这样修改之后,程序可以使用一组基本命令行选项。 
我们运行 python hello.py runserver 来启动 Web 服 务器。

还有很多选项来代替app的debug和host属性:

--host HOST 设置host为 HOST --port PORT 设置port为 PORT-d 设置以debug模式运行而非run模式 
-r 设置自动重新载入(app.debug为True)12341234

命令:

python hello.py runserver -d -r --host 0.0.0.011

时间: 2024-10-21 00:07:18

flask-带你快速入门的相关文章

三 Flask web开发快速入门

1:会话: from flask import Flask, url_for, request, render_template, session from werkzeug.utils import redirect, escape app = Flask(__name__) @app.route('/') def index(): if 'username' in session: return 'Logged in as %s' % escape(session['username'])

10 分钟,带你快速入门前端三大技术(HTML、CSS、JavaScript)

听到前端技术,不少朋友一定会感到有些陌生.但其实,前端,你每天都在接触. 你正在使用的APP,你正在浏览的网页,这些你能看到的界面,都属于前端. 而前端最重要的三大技术,HTML,CSS,JavaScript,则是每一个前端开发者必须具备的技能. 掌握这些技能,你可以快速地做出一个酷炫的APP界面或者一个简单大方的网站页面.因此,就让我们一起来快速学习一下这三门技术吧. 以下内容节选自课程<Vue.js 和 Node.js 构建内容发布系统>. 大家也可以点击课程链接,在实验楼提供的虚拟机环境

C# 单元测试,带你快速入门

注:本文示例环境 VS2017 XUnit 2.2.0 单元测试框架 xunit.runner.visualstudio 2.2.0 测试运行工具 Moq 4.7.10 模拟框架 为什么要编写单元测试 对于为什么要编写单元测试,我想每个人都有着自己的理由.对于我个人来说,主要是为了方便修改(bug修复)而不引入新的问题.可以放心大胆的重构,我认为重构觉得是提高代码质量和提升个人编码能力的一个非常有用的方式.好比一幅名画一尊雕像,都是作者不断重绘不断打磨出来的,而优秀的代码也需要不断的重构. 当然

30分钟带你快速入门MySQL教程

这是一篇真正适合初学者的MySQL数据库入门文章,哪怕你从来没有接触过数据库,或者说你从来没有听说过有数据库这东西,请一定要相信我,我当时就是这么过来的. 如果你刚开始接触MySQL数据库,或者你需要使用MySQL数据库来保存一些基本的数据,比如说,用户基本信息.学生基本信息表等,但却不知道何从下手,那么这篇文章就很适合你了,下面通过一个有趣的案例来带你熟悉MySQL的基本指令操作,希望你也能跟着操作,这样之后,相信你肯定就不会觉得很陌生了. 本文力图思路清晰和简洁,虽然有点长,但文字都是非常通

“Easy WebSockets with Flask and Gevent” 翻译学习笔记 ——Flask WebSocket使用快速入门

原文链接:http://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent 介绍部分就先不翻了 This weekend I decided to take a short vacation from my book writing effort and spend time on a project I wanted to work on for a long time. The result of this e

Zara带你快速入门WPF(4)---Command与功能区控件

前言:许多数据驱动的应用程序都包含菜单和工具栏或功能区控件,允许用户控制操作,在WPF中,也可以使用功能区控件,所以这里介绍菜单和功能区控件. 一.菜单控件 在WPF中,菜单很容易使用Menu和MenuItem元素创建,如下面代码,其中一个主菜单和一个次菜单,以及一个子菜单项列表. <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presen

Wireshark抓包,带你快速入门

前言 关于抓包我们平时使用的最多的可能就是Chrome浏览器自带的Network面板了(浏览器上F12就会弹出来).另外还有一大部分人使用Fiddler,Fiddler也是一款非常优秀的抓包工具.但是这两者只能对于HTTP和HTTPS进行抓包分析.如果想要对更底层的协议进行分析(如TCP的三次握手)就需要用到我们今天来说的工具Wireshark,同样是一款特牛逼的软件,且开源免费自带中文语言包. 安装和基本使用 Wireshark开源地址:https://github.com/wireshark

一篇文章带你快速入门createjs

开始用createjs这个框架的时候,发现网上的相关教程还是挺少的,所以写一篇文章,方便日后查看. createjs简介 官网:http://www.createjs.cc/ createjs中包含以下四个部分: EaselJS:用于 Sprites.动画.向量和位图的绘制,创建 HTML5 Canvas 上的交互体验(包含多点触控) TweenJS:用于做动画效果 SoundJS:音频播放引擎 PreloadJS:网站资源预加载 类似于SoundJS,PreloadJS,如果自己处理起来比较方

Zara带你快速入门WPF(4)---菜单与功能区控件

前言:许多数据驱动的应用程序都包含菜单和工具栏或功能区控件,允许用户控制操作,在WPF中,也可以使用功能区控件,所以这里介绍菜单和功能区控件. 一.菜单控件 在WPF中,菜单很容易使用Menu和MenuItem元素创建,如下面代码,其中一个主菜单和一个次菜单,以及一个子菜单项列表. <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presen

python快速入门——进入数据挖掘你该有的基础知识

这篇文章是用来总结python中重要的语法,通过这些了解你可以快速了解一段python代码的含义 Python 的基础语法来带你快速入门 Python 语言.如果你想对 Python 有全面的了解请关注本博客Python的文章,这篇文章也可以当作复习,自己查漏补缺,读者可以在留言区分享自己的 Python 学习和使用心得. 首先聊一下Python的意义 要学好数据分析,一定要掌握 Python 吗?我想,要想学好数据分析,你最好掌握 Python 语言.为什么这么说呢? 首先,在一份关于开发语言