我在本地构建了静态Sphinx文档(使用make html
)。
我现在希望将Sphinx文件集成到我使用Flask运行的webapp中。从Flask运行应用程序中,我只是想包含一个指向Sphinx文档的超链接,它将作为应用程序的帮助。
Websupport似乎是要遵循的方式,但我不清楚如何将Flask框架与Sphinx文件联系起来。
感谢您的帮助,
此致
答案 0 :(得分:5)
您可以使用Web服务器处理它,就像处理Flask中的/static
目录一样。例如,如果您使用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。
答案 1 :(得分:5)
其他解决方案很好地省略了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
答案 2 :(得分:3)
您可以将文档中的_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)
答案 3 :(得分:2)
在某些情况下,您不希望将文档公开给所有用户,因此无法在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)