【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?

简介: 【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?

问题描述

使用Flask框架部署Python代码,如何访问其中的静态文件呢?如static问价夹中的图像资源,同时如何在代码中读取txt文件中的内容呢?是相对路径或者是绝对路径呢?

实验步骤

在App Service (Windows)环境中部署Flask Python应用时,需要考虑注意参考文档“发布到 Windows 上的 Azure 应用服务”, Python项目的Web.config内容为:

<system.webServer>
  <handlers>
    <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
        scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py"
        resourceType="Unspecified" requireAccess="Script"/>
  </handlers>
</system.webServer>

而特别对于Flash项目,需要添加项目的启动配置:

Flask:将 WSGI_HANDLER 值更改为 <project_name>.app,其中 <project_name> 与项目名称匹配。 可通过查看 runserver.py 中的 from <project_name> import app 语句,找到准确的标识符。 例如,如果项目命名为“FlaskAzurePublishExample”,则该条目如下所示:

<!-- Flask apps only: change the project name to match your app -->

<add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>

以下的实验是在通过相对路径访问静态图片:

  • 首先项目路径如下(项目发布到Azure后,通过Kudu站点查看项目文件路径)

 

  • 静态文件放在了static这个文件夹下
  • test.py运行代码如下:
 
from flask import Flask,render_template
 
app = Flask(__name__, static_folder='', static_url_path='')
@app.route('/')
def index():
    return render_template('index.html')
    
if __name__ == '__main__':
app.run()
  • 访问的时候用url_for函数,templates文件夹下的index.html如下:

  • 测试结果,直接访问站点根目录时可以访问到静态文件

 

 

以上是通过HTML访问项目中的静态资源文件,如果是需要通过代码的方式读取txt文件中的内容,由于可能存在发布后的相对路径与本地测试时候路径不一致,所以建议使用部署在App Service中的绝对路径。如:open(‘D:/hone/site/wwwroot/static/test.txt’,’r’)  

 

但如果一定需要使用相对路径,这可以考虑使用App Service Home路径的环境变量,如:open(‘%HOME%/site/wwwroot/static/test.txt,’r’) 。

 

参考资料

发布到 Windows 上的 Azure 应用服务https://docs.microsoft.com/zh-cn/visualstudio/python/publish-to-app-service-windows?view=vs-2019#publish-to-app-service---visual-studio-2017-and-later

相关文章
|
9月前
|
Java 应用服务中间件 API
【App Service】部署War包到Azure云上遇404错误
Java应用部署至Azure App Service for Windows后报404,本地运行正常。经排查,日志提示类文件版本不兼容:应用由Java 17(class file version 61.0)编译,但环境仅支持到Java 11(55.0)。错误根源为Java版本不匹配。调整App Service的Java版本至17后问题解决,成功访问接口。
1083 3
|
9月前
|
存储 Linux 网络安全
【Azure App Service】Root CA on App Service
Azure App Service for Windows应用连接外部SSL服务时,需确保其证书由受信任的根CA颁发。多租户环境下无法修改根证书,但ASE(单租户)可加载自定义CA证书。若遇证书信任问题,可更换为公共CA证书或将应用部署于ASE并导入私有CA证书。通过Kudu的PowerShell(Windows)或SSH(Linux)可查看当前受信任的根证书列表。
214 13
|
10月前
|
网络协议 Java Linux
【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?
在 Azure App Service(Windows 和 Linux)中部署应用时,分析网络连接状态是排查异常、验证端口监听及确认后端连接的关键。本文介绍如何在 Linux 环境中使用 `netstat` 命令查看特定端口(如 443、3306、6380)的连接情况,并解析输出结果。同时说明在 Windows App Service 中 `netstat` 被禁用的情况下,如何通过门户抓包等替代方法进行网络诊断。内容涵盖命令示例、操作步骤及附录说明,帮助开发者快速掌握云环境中的网络分析技巧。
256 11
|
关系型数据库 数据库 开发工具
利用Flask + python3.6+MYSQL编写一个简单的评论模块。
利用flask + python3.6+MYSQL编写一个简单的评论模块。输入内容提交后,会显示在页面上。 发送并接受评论框的数据 在falsk返回首页的函数前,加入methods属性。 @app.route("/", methods=["GET", "POST"]) 两种接收数据的方式 暂时性的保存,并显示在网页上.in-memory storage 主程序如下,每当程序reload时候,comments会被初始化。
2929 0
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
1260 86
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
1194 2
|
前端开发 计算机视觉 Python
flask+python 实时视频流输出到前台
该文章介绍了如何使用Flask和Python实现实时视频流输出到网页前端,包括后端通过OpenCV捕获摄像头视频流、处理并编码为JPEG格式,然后以HTTP响应的形式发送给前端显示的完整示例代码和运行效果。
flask+python 实时视频流输出到前台
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
992 2
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
构建RESTful APIs:使用Python和Flask
260 1

推荐镜像

更多