Flask 创建app 时候传入的 static_folder 和 static_url_path参数理解

2024-09-07 17:58

本文主要是介绍Flask 创建app 时候传入的 static_folder 和 static_url_path参数理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Flask 在创建app的时候

是用

app = Flask(__name__)


来创建的,不传入 static_folder参数的话 ,默认的静态文件的位置是在 static目录下

我们可以进入 Flask的源码里面查看 ctrl+鼠标左键进入

这是Flask的 __init__源码(后面还有一些,我就选了需要的代码)

   

 def __init__(self,import_name,static_url_path=None,static_folder='static',static_host=None,host_matching=False,subdomain_matching=False,template_folder='templates',instance_path=None,instance_relative_config=False,root_path=None):_PackageBoundObject.__init__(self,import_name,template_folder=template_folder,root_path=root_path)if static_url_path is not None:self.static_url_path = static_url_pathif static_folder is not None:self.static_folder = static_folder


我们可以看到 static_folder 是默认为 static的

我们之所以能够访问到 static下面的静态文件,是因为注册了路由,就和flask的 app.route一样

我们现在查看下 注册路由的方法

        if self.has_static_folder:assert bool(static_host) == host_matching, 'Invalid static_host/host_matching combination'self.add_url_rule(self.static_url_path + '/<path:filename>',endpoint='static',host=static_host,view_func=self.send_static_file)


实际上 app.route底层也是这个方法

然后进去 staic_url_path这个方法

可以看到

    def _get_static_url_path(self):if self._static_url_path is not None:return self._static_url_pathif self.static_folder is not None:return '/' + os.path.basename(self.static_folder)


一看就明白,假如我们创建app的时候 传入了 static_folder参数,那么就返回url

比如我们传人的是

app = Flask(__name__, static_folder='views/statics')


那么我们的静态文件访问就变成了 statics了

同理 我们也只能访问static下面的文件。

我们还可以这样定义

app = Flask(__name__, static_folder='spider', static_url_path='/spider/1')
这句话的意思就是 我们可以spider文件下的静态文件,但是我们访问的方式为

127.0.0.1:5000/spider/1/xxx.xxx
 

这篇关于Flask 创建app 时候传入的 static_folder 和 static_url_path参数理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145754

相关文章

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

Flask解决指定端口无法生效问题

《Flask解决指定端口无法生效问题》文章讲述了在使用PyCharm开发Flask应用时,启动地址与手动指定的IP端口不一致的问题,通过修改PyCharm的运行配置,将Flask项目的运行模式从Fla... 目录android问题重现解决方案问题重现手动指定的IP端口是app.run(host='0.0.

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在