我在本地构建了静态 Sphinx 文档(使用make html
)。
我现在希望将 Sphinx 文件集成到我的使用 Flask 运行的 web 应用程序中。从 Flask 运行的应用程序中,我只是想包含一个指向 Sphinx 文档的超链接,它将作为应用程序的帮助。
Websupport似乎是要遵循的方式,但我不清楚我应该如何将 Flask 框架连接到 Sphinx 文件。
谢谢你的帮助,
问候
我在本地构建了静态 Sphinx 文档(使用make html
)。
我现在希望将 Sphinx 文件集成到我的使用 Flask 运行的 web 应用程序中。从 Flask 运行的应用程序中,我只是想包含一个指向 Sphinx 文档的超链接,它将作为应用程序的帮助。
Websupport似乎是要遵循的方式,但我不清楚我应该如何将 Flask 框架连接到 Sphinx 文件。
谢谢你的帮助,
问候
其他解决方案很好地省略了Flask
对象初始化,这导致我把头撞到墙上一段时间。
根本不涉及 Sphinx 项目结构,这是对我有用的解决方案:
from flask import Flask
app = Flask(__name__, static_url_path='/', static_folder='_build/html/')
@app.route('/')
@app.route('/<path:path>')
def serve_sphinx_docs(path='index.html'):
return app.send_static_file(path)
if __name__ == '__main__':
app.run(debug=True)
下面是项目的文件结构,其中<doc>
代表了我实际为文档编写的第一个文件,并且app.py
是包含上述 Flask 应用程序代码的文件。
.
├── Makefile
├── _build
│ ├── doctrees
│ │ ├── index.doctree
│ │ ├── <doc>.doctree
│ │ ├── ...
│ │ └── <doc>.doctree
│ └── html
│ ├── _images
│ ├── _modules
│ │ ├── index.html
│ │ └── <package name>
│ │ └── ...
│ ├── _sources
│ │ ├── <doc>.rst.txt
│ │ ├── ...
│ │ └── <doc>.rst.txt
│ ├── _static
│ │ ├── ajax-loader.gif
│ │ ├── alabaster.css
│ │ └── ...
│ ├── genindex.html
│ ├── index.html
│ ├── objects.inv
│ ├── py-modindex.html
│ ├── search.html
│ ├── searchindex.js
│ ├── <doc>.html
│ ├── ...
│ └── <doc>.html
├── _static
│ ├── custom.css
│ └── <myimage>.gif
├── _templates
├── app.py
├── conf.py
├── index.rst
├── make.bat
├── <doc>.rst
├── ...
└── <doc>.rst
你可以用你的网络服务器来处理它,就像你/static
在 Flask 中处理目录一样。例如,如果您使用 Apache 作为您的生产 Web 服务器,您可以添加
Alias /documentation /location/of/sphinx/html
<Directory /location/of/sphinx/html>
Order deny,allow
Allow from all
</Directory>
到您的 Apache 站点配置,因此您可以直接链接http://yoursite.com/documentation
到访问 Sphinx 文件,完全避免使用 Flask。
您可以将_build/html
文档中的doc
文件夹复制到烧瓶static
目录中的文件夹中,并使用以下规则为它们提供服务:
@app.route('/doc/<dir>/<filename>', defaults={'static': True})
def doc(dir='',filename='index.html'):
path = join(dir,filename)
return app.send_static_file(path)
在某些情况下,您不想向所有用户公开您的文档,因此在 Apache 或 Nginx 级别进行配置不是一种选择。以下对我有用:
@app.route('/docs', defaults = {'filename': 'index.html'})
@app.route('/docs/<path:filename>')
@login_required
def web_docs(filename):
path = os.path.join('docs/html', filename)
return app.send_static_file(path)
BUILDDIR
在 sphinx Makefile 中设置路径
BUILDDIR = app/static/docs
添加烧瓶路线
@app.get('/docs/')
@app.get('/docs/<path:filename>')
def get_docs(filename='index.html'):
path = os.path.join('docs/html', filename)
return app.send_static_file(path)
构建 sphinx 文档。
$ make html
您可以浏览http://127.0.0.1:5000/docs以获取 sphinx 文档页面。所有 sphinx docs 静态文件都将在此路由下提供。如果需要,您还可以将 Flask 身份验证添加到路由。
测试版本: