首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flask中的静态文件- robot.txt、sitemap.xml (mod_wsgi)

Flask中的静态文件- robot.txt、sitemap.xml (mod_wsgi)
EN

Stack Overflow用户
提问于 2010-11-22 03:27:00
回答 6查看 47.2K关注 0票数 97

在Flask的应用程序根目录中存储静态文件有什么聪明的解决方案吗?预计在/中可以找到robots.txt和sitemap.xml,所以我的想法是为它们创建路由:

代码语言:javascript
复制
@app.route('/sitemap.xml', methods=['GET'])
def sitemap():
  response = make_response(open('sitemap.xml').read())
  response.headers["Content-type"] = "text/plain"
  return response

一定有更方便的东西:)

EN

回答 6

Stack Overflow用户

发布于 2011-02-10 16:36:28

@vonPetrushev是对的,在生产中,你会希望通过nginx或apache提供静态文件,但对于开发来说,拥有简单的开发环境是很好的,让你的python应用程序提供静态内容,这样你就不必担心更改配置和多个项目。要做到这一点,您需要使用SharedDataMiddleware

代码语言:javascript
复制
from flask import Flask
app = Flask(__name__)
'''
Your app setup and code
'''
if app.config['DEBUG']:
    from werkzeug import SharedDataMiddleware
    import os
    app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {
      '/': os.path.join(os.path.dirname(__file__), 'static')
    })

此示例假设您的静态文件位于" static“文件夹中,调整为适合您的环境。

票数 67
EN

Stack Overflow用户

发布于 2013-01-18 06:50:16

尽管这是一个老生常谈的问题,但我之所以回答这个问题,是因为这篇文章在谷歌搜索结果中占据了相当高的位置。虽然文档中没有对其进行介绍,但如果您阅读了Flask Application对象构造函数的the API docs,就会对其进行介绍。通过像这样传递命名参数static_folder

代码语言:javascript
复制
from flask import Flask
app = Flask(__name__,
            static_folder="/path/to/static",
            template_folder="/path/to/templates")

...you可以定义提供静态文件的位置。类似地,您可以定义一个template_folder,即您的static_url_path的名称。

票数 23
EN

Stack Overflow用户

发布于 2010-11-22 08:54:23

为静态文件提供服务与旨在提供动态内容的应用程序无关。提供静态文件的正确方式取决于您使用的服务器。毕竟,当您的应用程序启动并运行时,您将需要将其绑定到web服务器。我只能代表apache httpd发言,所以提供静态文件的方式是在通过mod-wsgi绑定到应用程序的虚拟主机中定义的。下面的指南将向您展示如何为站点地图、robots.txt或任何静态内容提供服务:http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Mounting_At_Root_Of_Site

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4239825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档