编程语言
首页 > 编程语言> > Python Flask高级编程之从0到1开发《鱼书》精品项目

Python Flask高级编程之从0到1开发《鱼书》精品项目

作者:互联网

Python Flask高级编程之从0到1开发《鱼书》精品项目

我们先从flask基本的使用开始,然后带着大家慢慢开发一个项目

1. flask介绍

Flask是一个基于Python实现的web开发的'微'框架

中文文档地址

Flask和Django一样,也是一个基于MVC设计模式的Web框架

flask流行的主要原因:

a)有非常齐全的官方文档,上手非常方便

b) 有非常好的拓展机制和第三方的拓展环境,工作中常见的软件都有对应的拓展,自己动手实现拓展也很容易

c) 微型框架的形式给了开发者更大的选择空间

2. 安装flask

2.1虚拟环境搭建

virtualenv --no-site-packages falskenv
  
激活windows下虚拟环境
cd Scripts
activate

2.2 安装

pip install flask

3. 基于flask的最小的应用

创建hello.py文件

from flask import Flask

app = Flask(__name__)

@app.route('/')
def gello_world():
    return 'Hello World'

if __name__ == '__main__':

    app.run()

  

运行:python hello.py

3.1 初始化

from flask import Flask

app = Flask(__name__)

  

Flask类构造函数唯一需要的参数就是应用程序的主模块或包。对于大多数应用程序,Python的__name__变量就是那个正确的、你需要传递的值。Flask使用这个参数来确定应用程序的根目录,这样以后可以相对这个路径来找到资源文件。

3.2 路由

@app.route('/')

客户端例如web浏览器发送 请求 给web服务,进而将它们发送给Flask应用程序实例。应用程序实例需要知道对于各个URL请求需要运行哪些代码,所以它给Python函数建立了一个URLs映射。这些在URL和函数之间建立联系的操作被称之为 路由 。

在Flask应程序中定义路由的最便捷的方式是通过显示定义在应用程序实例之上的app.route装饰器,注册被装饰的函数来作为一个路由

3.3 视图函数

在上一个示例给应用程序的根URL注册gello_world()函数作为事件的处理程序。如果这个应用程序被部署在服务器上并绑定了 www.example.com 域名,然后在你的浏览器地址栏中输入 http://www.example.com 将触发gello_world()来运行服务。客户端接收到的这个函数的返回值被称为 响应 。如果客户端是web浏览器,响应则是显示给用户的文档。

类似于gello_world()的函数被称作 视图函数

3.4 动态名称组件路由

你的Facebook个人信息页的URL是 http://www.facebook.com/<username> ,所以你的用户名是它的一部分。Flask在路由装饰器中使用特殊的语法支持这些类型的URLs。下面的示例定义了一个拥有动态名称组件的路由:

@app.route('/hello/<name>')

def gello_world(name):

    return 'Hello World %s' % name

  

用尖括号括起来的部分是动态的部分,所以任何URLs匹配到静态部分都将映射到这个路由。当视图函数被调用,Flask发送动态组件作为一个参数。在前面的示例的视图函数中,这个参数是用于生成一个个性的问候作为响应。

在路由中动态组件默认为字符串,但是可以定义为其他类型。例如,路由/user/<int:id>只匹配有一个整数在id动态段的URLs。Flask路由支持int、float、string、path

路由匹配的规则
1.<id> :默认接受的类型是str
2.<string:id> :指定id的类型为str
3.<int:id> :指定的id类型是整性
4.<float:id> : 指定id的类型为浮点数(四舍五入,且不能接收整数类型)
5.<path:path1> : 指定接收的path为url中的路径

如下:

  
@blue.route('/get_id/<id>/')
def get_id(id):
    #匹配str类型的id值
    return 'id: %s' % id


@blue.route('/get_int_id/<int:id>/')
def get_int_id(id):
    #匹配int类型的id值
    return 'id:%d' % id


@blue.route('/get_float/<float:uid>/')
def get_float(uid):
    #匹配float类型的值,不能匹配int类型(四舍五入)
    return 'uid:%.2f' %uid


@blue.route('/get_path/<path:upath>/')
def get_path(upath):
    #匹配url路径
    return 'path:%s' % upath

  

 

标签:__,get,Python,route,鱼书,Flask,id,路由
来源: https://www.cnblogs.com/itman123/p/11604554.html