zoukankan      html  css  js  c++  java
  • Flask框架 之路由

    一、视图函数路由规则

    from flask import Flask, redirect, url_for
    
    # 创建flask应用对象
    # __name__ 代表当前模块名称
    # flask以当前目录为总目录,static目录为静态目录,templates为模版目录
    app = Flask(__name__)
    
    
    @app.route("/")
    def index():
        """定义视图函数"""
        return "hello world"
    
    
    # 通过methods限定访问方式
    @app.route("/post", methods=["POST"])
    def post():
        return "do post"
    
    
    @app.route("/hi1")
    @app.route("/hi2")
    def hi():
        return "hi page"
    
    @app.route("/login")
    def login():
        # 使用url_for函数通过视图函数的名字找到url路径
        url = url_for("index")
        return redirect(url)
    
    if __name__ == '__main__':
        # 查看所有的路由
        print(app.url_map)
        # 启动应用程序
        app.run(debug=True)

    二、路由参数提取与自定义转换器

    from flask import Flask, redirect, url_for
    from werkzeug.routing import BaseConverter
    
    # 创建flask应用对象
    # __name__ 代表当前模块名称
    # flask以当前目录为总目录,static目录为静态目录,templates为模版目录
    app = Flask(__name__)
    
    
    # 路由转换器 int,float,path
    # http://127.0.0.1:5000/goods/12
    @app.route("/goods/<int:goods_id>")
    # @app.route("/goods/<goods_id>") 也可以
    def goods_detail(goods_id):
        return "goods_detail_%s" % str(goods_id)
    
    
    # 1、自定义转化器
    class RegexConvert(BaseConverter):
        def __init__(self, url_map, regex):
            # 调用父类初始化方法
            # super(RegexConvert, self).__init__(url_map)
            BaseConverter.__init__(self, url_map)
            # 将正则表达式保存到对象属性中,flask会使用这个属性来路由正则匹配
            self.regex = regex
    
    
    # 2、将自定义的转化器添加到flask中
    app.url_map.converters["re"] = RegexConvert
    
    
    # 3、使用
    @app.route("/send/<re(r'1[34578]d{9}'):mobile>")
    # http://127.0.0.1:5000/send/18612345678
    def send_sms(mobile):
        return "send sms to %s" % mobile
    
    @app.route("/")
    def index():
        url = url_for("send_sms", mobile = "18612345678")
        return redirect(url)
    
    
    if __name__ == '__main__':
        # 查看所有的路由
        print(app.url_map)
        # 启动应用程序
        app.run(debug=True)
  • 相关阅读:
    Python开发环境搭建
    Python逻辑判断顺序
    PyCharm快捷改变字体大小
    Python类型转换
    前端面试总结2020
    问题总结20-11-02至20-11-09
    问题总结20-11-30至20-12-06
    项目管理培训20-12-06
    日期计算
    数列分段
  • 原文地址:https://www.cnblogs.com/yang-2018/p/11006863.html
Copyright © 2011-2022 走看看