当前位置: 首页 > 面试题库 >

Flask:如何提供静态HTML?

聂风史
2023-03-14
问题内容

我正在尝试提供静态html文件,但返回500错误(.py和模板目录上有editor.html的副本),这是我尝试过的全部操作:

from flask import Flask
app = Flask(__name__, static_url_path='/templates')
@app.route('/')
def hello_world():
    #return 'Hello World1!' #this works correctly!
    #return render_template('editor.html')
    #return render_template('/editor.html')
    #return render_template(url_for('templates', filename='editor.html'))
    #return app.send_static_file('editor.html') #404 error (Not Found)
    return send_from_directory('templates', 'editor.html')

这是响应:

Title: 500 Internal Server Srror

Internal Server Error

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

问题答案:

将其简化为最简单的方法

  1. 将静态资产放入static子文件夹。
  2. 将Flask设置为默认值,也不要设置为默认值static_url_path
  3. 通过预配置访问静态内容/static/以验证文件是否有效

如果仍然要重用静态文件,请使用current_app.send_static_file(),而不要使用/斜杠:

from flask import Flask, current_app
app = Flask(__name__)

@app.route('/')
def hello_world():
    return current_app.send_static_file('editor.html')

这将editor.html 直接static文件夹内查找文件。

假定您将上面的文件保存在一个带有static子文件夹的文件夹中,该子文件夹中有一个文件editor.html

其他注意事项:

  • static_url_path更改 URL 静态文件可用,而不是文件系统上用于从中加载数据的位置。
  • render_template()假设您的文件是Jinja2模板;如果它实际上只是一个静态文件,那么这是过大的,如果该文件中存在实际的可执行语法而有错误或缺少上下文,则 可能 导致错误。


 类似资料:
  • 问题内容: 所以这很尴尬。我有一个应用程序,该应用程序已集成在一起,现在它只提供一个静态HTML页面,其中包含指向CSS和JS的链接。而且我找不到文档中描述返回静态文件的位置。是的,我可以使用,但是我知道数据没有模板化。我还以为或者是正确的事情,但我不能让这些工作。同时,我正在打开文件,阅读内容,并装配Response具有适当mimetype的: 有人要为此提供代码示例或网址吗?我知道这将变得简单

  • 问题内容: 我有一个应用程序,该应用程序已集成在一起,现在它只提供一个静态页面,其中包含指向CSS和JS的链接。而且我找不到文档中描述返回静态文件的位置。是的,我可以使用,但是我知道数据没有模板化。我还以为或者是正确的事情,但我不能让这些工作。同时,我正在打开文件,阅读内容,并装配具有适当的: 有人要为此提供代码示例或网址吗?我知道这将变得简单。 问题答案: 首选方法是使用nginx或其他Web服

  • 问题内容: 我有一个具有以下结构的Web应用程序: 我已经设法使用nginx和wsgi运行Web应用程序,但是问题是没有提供静态文件,我的意思是,当我转到它们的URL时,服务器找不到它们。它给我404。 这是我的nginx配置文件部分: 缺少什么吗? 问题答案: 将此添加到你的nginx配置 用你应用的绝对路径替换时,你应该注意它不包含静态目录,并且其中的所有内容都将存储在中。

  • 问题内容: 我使用Flask并想更改资产文件夹目录。这是我的文件夹结构: 我想将静态文件夹下的所有文件夹移到该文件夹下。但是当我这样做时,我的css文件和其他文件无法加载页面。我应该为我的应用程序设置一个属性吗?我也尝试了以下方法: 但是无法做到这一点,还有其他方法吗? 更新: 当我在上方的行中删除前导斜杠时,出现了 带有追溯的错误: 问题答案: 初始化应用程序时,它应该是static_folde

  • 我在这里运行了spring boot示例web静态项目,对pom进行了此更改 并添加了此类以提供来自相同文件夹位置的重复页面index2.html: json url工作正常,但当我尝试访问localhost:8080/tw我得到一个空白页,并在控制台这个错误: 我做错什么了吗?

  • 问题内容: 我使用的是OpenShift PaaS,无法弄清楚如何在那里修改.htaccess文件。 我碰到了这段代码,它通过模板为站点地图提供服务。我在应用程序中同时针对站点地图和robots.txt做到了这一点- 这有什么危害吗,或者我的方法还可以吗? 问题答案: 把和到你的应用程序的目录,并定义了这样的观点: