美文网首页
Flask-路由

Flask-路由

作者: 遇明不散 | 来源:发表于2019-05-02 11:51 被阅读0次

路由(route)

什么是路由
  • 客户端将请求发送给web服务器,web服务器再将请求发送给flask程序实例,程序实例需要知道每个url请求要运行哪些代码,所以需要建立一个 url 到 python函数的映射,处理url和函数之间的关系的程序就是路由。
  • 在Flask中,路由是通过 @app.route 装饰器来表示的。
路由的体现
路由的基本表示
# app可以自定义
@app.route('/')
def index():
    reutrn "xxx"

@app.route('/login')
def login():
    return 'xxx'
带参数的路由
  • 基本带参路由
@app.route('/show/<name>')
def show(name):
    # 在函数中 name 表示的就是地址栏上传递过来的数据
    return 'xxx'
  • 带多个参数的路由
@app.route('/show/<name1>/<name2>')
def show2(name1,name2):
    reutrn 'xxx'
  • 指定参数类型的路由
# <int:age>:表示age参数时一个整型的数值而并非默认的字符串
# Flask 中所支持的类型转换器
@app.route('/show/<name>/<int:age>')
def show(name,age):
    return 'xxx'
  • Flask中所支持的类型转换器
# 类型转换器     作用
# 缺省          字符串型,但不能有/(斜杠)
# int:          整型
# float:        浮点型
# path:         字符串型,可以有 / (斜杠)
  • 示例程序
from flask import Flask
app = Flask(__name__)

@app.route('/show1/<name>')
def show(name):
    return "<h1>姓名为:%s</h1>" % name

@app.route('/show2/<name>/<age>')
def show1(name,age):
    return "<h1>姓名为:%s,年龄是:%s </h1>" % (name,age)

@app.route('/show3/<name>/<int:age>')
def show2(name,age):
    return "<h1>指定类型->姓名为:%s,年龄是:%d </h1>" % (name,age)

if __name__ == "__main__":
    app.run(debug = True)
多URL的路由匹配

允许在一个视图处理函数中设置多个url路由规则

@app.route('/')
@app.route('/index')
def index():
    reutrn "xxx"
  • 示例程序
from flask import Flask
app = Flask(__name__)

@app.route('/')
@app.route('/index')
@app.route('/<int:page>')
# 缺省参数默认值设置为 None
def index(page = None):
    if page is None:
        page = 1
    return 'The page is %d' % page

if __name__ == "__main__":
    app.run(debug = True)
路由中设置HTTP请求方法

Flask路由规则也允许设置对应的请求方法,只有将匹配上请求方法的路径交给视图处理函数去执行

# @app.route('/post',methods=['GET'])
# 只有post请求方式允许访问 localhost:5000/post
@app.route('/post',methods=['POST'])
def post():
    return 'xxxx'
URL的反向解析
  • 正向解析
    程序自动解析,根据@app.route()中的访问路径来匹配处理函数
  • 反向解析
    通过视图处理函数的名称自动生成视图处理函数的访问路径
# 此函数,用于反向解析 url
# 第一个参数:指向函数名(通过@app.route()修饰的函数)
# 后续的参数:对应要构建的url上的变量
url_for() 

# 静态文件反向解析
url_for('static',filename='style.css')
  • 示例
@app.route('/')
def index():
    return "Index"
url_for('index')  # 结果为:/

@app.route('/show/<name>')
def show(name):
    reutrn "name:%s" % name
url_for('show',name='zsf') # 结果为:/show/zsf

相关文章

  • Flask-路由

    路由(route) 什么是路由 客户端将请求发送给web服务器,web服务器再将请求发送给flask程序实例,程序...

  • Flask 框架(2)-模板

    Flask-模板

  • python版websocket

    背景 目前看到实现websocket的框架的- django的channels- flask- sanic好奇,用...

  • flask-信号

    Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为。 使用方法...

  • Flask-基础

    网页的分类 静态网页:无法与服务器进行交互的网页 动态网页:能够与服务器进行交互的网页 WEB与服务器 WEB 网...

  • Flask-模型

    模型 什么是模型 模型是根据数据库中表的结构来创建出来的class。每一张表到编程语言中就是一个class,表中的...

  • Flask-模板

    模板-Templates 什么是模板 模板是一个包含响应文本的文件(通常是html文件),该文件中允许包含"占位变...

  • Flask- 部署

    1.创建虚拟环境文件夹 mkdir src 2.创建虚拟环境virtualenv --no-site-packa...

  • flask-模板

    一、模板的定义 二、模板引擎 flask使用jinja2作为默认模板引擎 2-1:默认配置 template_fo...

  • Flask中的flask_login

    Flask- login为Flask提供了用户会话管理。它处理登录、注销和长时间记住用户会话等常见任务。 安装 L...

网友评论

      本文标题:Flask-路由

      本文链接:https://www.haomeiwen.com/subject/hvygnqtx.html