首页 > 其他分享 >flask中添加路由的方式

flask中添加路由的方式

时间:2023-06-26 11:46:42浏览次数:46  
标签:endpoint return flask rule url 添加 def home 路由

在Flask中,添加路由有两种方式:(一般情况下都是用第一种方式)

方式一:常见的装饰器模式

@app.route("/")
def index():
    return "Hello World"

方式二:通过阅读装饰器模式添加路由的源码发现

 

def route(self, rule, **options):
"""A decorator that is used to register a view function for a
given URL rule. This does the same thing as :meth:`add_url_rule`
but is intended for decorator usage::

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

For more information refer to :ref:`url-route-registrations`.

:param rule: the URL rule as string
:param endpoint: the endpoint for the registered URL rule. Flask
itself assumes the name of the view function as
endpoint
:param options: the options to be forwarded to the underlying
:class:`~werkzeug.routing.Rule` object. A change
to Werkzeug is handling of method options. methods
is a list of methods this rule should be limited
to (``GET``, ``POST`` etc.). By default a rule
just listens for ``GET`` (and implicitly ``HEAD``).
Starting with Flask 0.6, ``OPTIONS`` is implicitly
added and handled by the standard request handling.
"""

def decorator(f):
    endpoint = options.pop("endpoint", None)
    self.add_url_rule(rule, endpoint, f, **options)
    return f

return decorator

是通过self.add_url_rule这个方式建立起rule与视图函数的对应关系的,所以可以这样添加

def home():
    return "Hello, home!"


app.add_url_rule("/home", endpoint=None, view_func=home)

endpoint:给rule起一个别名,相当于django path路由函数中的name。

如何使用通过别名(endpoint)找到rule呢?(如果不起别名,就默认为函数名)

@app.route("/", endpoint="index")
def index():
    return "Hello World"


def home():
    from flask import url_for
    r = url_for("index")
    # /
    print(r)
    return "Hello, home!"

 

标签:endpoint,return,flask,rule,url,添加,def,home,路由
From: https://www.cnblogs.com/shaoyishi/p/17505231.html

相关文章

  • 11、默认路由(缺省路由)、浮动路由(主备路由)
    静态路由分析可看,管理员配置的路由条目比较多,当网络环境比较大时,路由条目就非常复杂,尤其是部署在企业出口的路由器,不可能明细化配置复杂的静态路由信息,一般在边界路由器配置默认路由,也是静态路由的一种方式。默认路由格式:【H3C】iproute-static0.0.0.00.0.0.0下一跳IP地址......
  • flask中关于配置文件写法
    关于Flask中的配置文件有多种写法。一、通过from_object写入项目根目录下创建一个settings.py配置文件,代码如下classBaseConfig(object):DEBUG=TrueSECRET_KEY="fsdajklfjdsalk1654356"classProductionConfig(BaseConfig):DEBUG=Falseclass......
  • 通过网关添加过滤器【SpringCloud】
    spring:application:name:gateway#服务名称cloud:nacos:server-addr:localhost:8848#nacos地址gateway:routes:#网关路由配置-id:itemservice#路由id,自定义,只要唯一即可#uri:http://127.0.0.1:8081#路由......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我们......
  • 个人博客-给推荐文章添加排序字段
    个人博客-给推荐文章添加排序字段前言前篇文章优化了推荐文章的加载,但是呢,还是不太满意,之前是按照文章的发布日期去排序的,既然是推荐文章,还是得用一个字段去专门管理顺序。设计思路:给推荐文章表添加一个排序字段,然后写一个修改方法即可。数据库字段这里的数据类型以sqlite3......
  • 给自己的博客上添加个flash宠物插件
    前言最近在一些博主的博客上看到一些小宠物的挂件,很有趣,访客到了网站后可以耍耍小宠物,增加网站的趣味性,在功能强大的博客系统上看到有这样的小宠物挂件还是蛮有趣的。 正文下面就简单介绍下如何在博客园的博客中添加这些可爱的flash动物插件。1.由于这些可爱的flash小宠物......
  • 添加ASM磁盘报错ORA-02097和ORA-15014
    添加ASM磁盘报错ORA-02097和ORA-15014背景:   这是一套正在安装的11.2.0.1RAC,GridInfrastructure已经安装完成,ASMLib和磁盘分区均已完成,在通过asmca图形界面创建磁盘的时候没有发现成员盘。问题现象:问题分析:从报错信息上来看可以很明显的看出是因为参数asm_diskstring参......
  • 11gR2 硬件导致重新添加节点
    11gR2硬件导致重新添加节点作者:吴伟龙一、环境描述:        这是一套五年前部署的双节点单柜11gRAC,当时操作系统盘是一块164g的单盘,没有做RAID。    OS:RedHatEnterPrise5.5x86_x64    GI:OracleGridInfrastructure11.2.0.3x86_x64    DB:......
  • vue项目本地启动history路由模式刷新页面404
    背景:之前一直用hash模式,改成history模式后刷新页面404解决:vue.config.js中publicPath:"/"如果是线上服务则还需要后端修改一些配置,见链接点击查看......