首页 > 其他分享 >url_for函数、视图函数、endpoint参数

url_for函数、视图函数、endpoint参数

时间:2024-12-10 15:56:49浏览次数:8  
标签:endpoint 函数 url 视图 名称 端点

在Flask中,url_for函数、路由装饰器中的endpoint参数以及视图函数名称之间的关系是理解Flask URL路由机制的关键。

先看示例代码:

HTML文件代码:
<li><a href="{{ url_for('val1', title='index首页') }}">首页1</a> </li>


python文件代码:
@app.route('/', endpoint='val2')
def funcnameval3():
    return render_template('index.html', title='index页面')

url_for 和端点(Endpoint)

url_for('val1', title='index首页'):这里的'val1'是指向**某个视图函数的端点名称**。

Flask使用这个端点名称来查找对应的URL规则,并生成相应的URL。

路由装饰器和端点(Endpoint)

@app.route('/', endpoint='val2'):这里定义了一个路由规则/,并且**显式指定了一个名为'val2'的端点**。

这意味着我们可以通过url_for('val2')来构建指向这个视图函数的URL。

视图函数名称

def funcnameval3()::这是视图函数的名称。

**如果未明确指定endpoint参数,那么默认情况下,Flask会将视图函数的名称作为端点名称。**

也就是说,在这种情况下,如果你没有设置endpoint='val2',那么端点名称将会是funcnameval3。

关系总结

如果我们想让HTML中的url_for与Python代码中的路由相匹配,我们应该确保url_for的第一个参数(即端点名称)与路由装饰器中指定的endpoint一致。

因此,'val1'应该改为'val2',以使它们匹配。

<li><a href="{{ url_for('val2', title='index首页') }}">首页1</a> </li>

funcnameval3是视图函数的名称,它与路由规则相关联。

当用户访问根路径/时,Flask会调用这个函数来处理请求并返回响应。

虽然视图函数名称在这里不直接影响url_for的行为(因为已经设置了endpoint),但它仍然是重要的,因为它用于标识这个特定的处理逻辑。

推荐写法

通常来说,为了保持清晰和一致性,推荐如下做法:

  • 端点名称应尽量直观地反映其用途或所关联的资源。例如,对于主页,可以命名为'home'或者'index'。

  • 视图函数名称也应该具有描述性,最好能反映出该函数的目的或作用。比如,对于主页的视图函数,可以命名为home()或index()。

  • 如果视图函数名称和端点名称相同,那么可以省略路由装饰器中的endpoint参数,因为Flask会自动使用视图函数名称作为端点名称。

所以,根据最佳实践,文章开始的代码可以修改为如下:

<li><a href="{{ url_for('index', title='index首页') }}">首页1</a> </li>

@app.route('/')
def index():
    return render_template('index.html', title='index页面')

这样做不仅简化了代码,还提高了可读性和维护性。

标签:endpoint,函数,url,视图,名称,端点
From: https://www.cnblogs.com/zeoHere/p/18596956

相关文章

  • 三大分布密度函数推导
    目录三大分布密度函数推导第六节\(\chi^{2}\)分布、t分布和F分布密度的推导一、\(\chi^{2}\)分布密度的推导二、t分布密度的推导三、F分布密度的推导三大分布密度函数推导下面方程的解\(\sum_{j=v}^{n}C_{n}^{i}\underline{p}'(1-\underline{p})^{n-1}=\alpha/2\),\(\sum_{j=......
  • 移动端使用cordova-plugin-wechat实现微信授权登录,可以拉起微信,点击允许之后没有进入
    开发移动端使用微信授权登录时,遇到了这个问题,被困了两天终于在第三天好了。我使用的写法是cordova-plugin-wechat-npm里提供的写法: 一模一样复制下来的。一开始看到别的地方多传了一个appID的参数,我加传之后会报错,还是改回按照文档的这个写法。一开始以为是没授权,实际上看......
  • 利用time函数生成随机数
    一、函数1.包括库函数和自定义函数2.官方的C标准库头文件如下https://zh.cppreference.com/w/c/header1.头文件string.h(1)system库函数           system是一个库函数,用来执行系统命令的            system的详细内容可见上一篇博客:system......
  • 字符函数和字符串函数
    目录1.字符分类函数2.字符转换函数3.strlen的使⽤和模拟实现4.strcpy的使⽤和模拟实现5.strcat的使⽤和模拟实现6.strcmp的使⽤和模拟实现7.strncpy函数的使⽤8.strncat函数的使⽤9.strncmp函数的使⽤10.strstr的使⽤和模拟实现11.strtok函数的使⽤......
  • url_for函数与静态文件
    在Flask应用程序中,url_for函数的第一个参数为'static'时,通常用于引用静态文件,如CSS、JavaScript文件或图片。这是因为Flask有一个特殊的处理机制来服务于这些类型的资源。让我们深入探讨一下原因。静态文件夹Flask默认会查找一个名为static的文件夹来提供静态文件。这个文件夹......
  • Flask中的视图函数
    在Flask中,视图函数是处理HTTP请求并返回HTTP响应的Python函数。它们是FlaskWeb应用的核心,用于定义不同URL路径对应的行为。视图函数的定义与使用:1.导入Flask类首先,我们需要从Flask模块导入Flask类。fromflaskimportFlask2.创建Flask应用实例然后......
  • class和普通构造函数有什么区别?
    在前端开发,特别是JavaScript中,class语法和传统的构造函数方法都可以用来创建对象,但它们之间有一些关键的区别:1.语法糖:Class:class语法是ES6引入的,本质上是构造函数的语法糖。它提供了一种更简洁、更面向对象的语法来定义对象蓝图。构造函数:传统的构造函数使用......
  • STM32单片机芯片与内部13 TIM-通用定时器TIM2345 高级定时器TIM18-定时计数功能、库函
    目录一、通用定时器库函数工程模板1、TIM_TimeBaseInitTypeDef2、时钟3、初始化4、中断服务函数二、通用定时器库函数API1、初始化封装2、中断服务函数封装三、高级定时器库函数工程模板1、TIM_TimeBaseInitTypeDef2、时钟3、初始化4、中断服务函数四、高级定时......
  • STM32单片机芯片与内部12 TIM-基本定时器TIM67 -定时计数功能、库函数配置、HAL库配置
    目录一、功能二、库函数工程模板1、NVIC_InitTypeDef与TIM_TimeBaseInitTypeDef2、时钟使能3、初始化4、清除中断5、开启/关闭中断6、使能/失能计数器三、库函数API1、初始化的封装2、中断服务函数四、HAL库工程模板1、TIM_HandleTypeDef2、TIM_MasterConfigType......
  • AD快捷键V切换视图-翻转
    1:如何把板子翻过来?    在编辑pcb的时候,按V,然后按B,板子就反过来了,然后按V,再按F,就显示在中间了。2:如何把零件放到另一面去?    左键点选元件,不要松开,按L键,元件就放到另一面了。3:    如何修改板子的形状?    如果已经定义过pcb板子的形状,则点击Design》BoardSha......