跳转到主要内容

Flask扩展,用于从discourse(论坛)内容中添加docsify(文档)。

项目描述

discourse-docsify

Flask扩展,从discourse论坛帖子中获取数据,以创建docsify(文档)网站。

这允许您利用docsify的功能,同时仍然受益于discourse的论坛特性:任何人都可以在您的社区中扩展和贡献美观的文档。

该项目受到了这个canonicalwebeteam的repo的启发。

设置

使用以下方法安装

pip install discourse-docsify

您可以直接初始化扩展

from flask import Flask
from discourse_docsify import Docs

app = Flask(__name__)
# for more config options and additional parameters see below
docs = Docs(app, config={
    'DOCS_HOMEPAGE_TITLE': 'My Documentation Website',
    'DOCS_DISCOURSE_API_USERNAME': '...',
    'DOCS_DISCOURSE_API_KEY': '...',
    'DOCS_DISCOURSE_BASE_URL': '...',
    'DOCS_DISCOURSE_INDEX_TOPIC_ID': '...',
})

或通过以下操作

from flask import Flask
from discourse_docsify import Docs

# for more config options and additional parameters see below
docs = Docs(config={
    'DOCS_HOMEPAGE_TITLE': 'My Documentation Website',
    'DOCS_DISCOURSE_API_USERNAME': '...',
    'DOCS_DISCOURSE_API_KEY': '...',
    'DOCS_DISCOURSE_BASE_URL': '...',
    'DOCS_DISCOURSE_INDEX_TOPIC_ID': '...',
})

app = Flask(__name__)
docs.init_app(app)

不需要在discourse上安装插件,您只需一个有效的API密钥。

索引主题

索引主题包含主页内容、将文档路径转换为论坛主题的URL映射列表以及文档侧边栏。

在这个主题中,#标题指定了一个节的开头。上述所有内容都对应于一个特定的节。以下是主题应具有的格式

# Homepage
Welcome to my Documentation!
        
# URLs
[details=Mapping table]
| topic | path |
| -- | -- |
| forum-url/t/general-handbook/5258 | /general-handbook |
| forum-url/t/how-to-install/5256  | /installation |
| forum-url/t/developer-api-specs/5259 | /api |
[/details]

# Navigation
[details=Navigation]
| level | path | navlink |
| -- | -- | -- |
| 1 |  | Handbooks |
| 2 | general-handbook | General Handbook |
| 1 | installation | Installation Instructions |
| 1 | api | Dev API |

[/details]

节的名字很重要(HomepageURLsNavigation)。

在URL表中,我们有topic(论坛链接)和path(文档URL路径)的配对。

在导航表中,level设置了侧边栏的缩进(意味着级别2的项将位于紧接其上的级别1项内),path是URL表中的路径(或为空,如果您想要一个无链接的分类)和navlink是侧边栏导航项的实际文本。

功能和描述

Discourse-Docsify将在/docs URL前缀(可以通过配置更改)处创建一个蓝图,该蓝图将服务由docsify请求的文件,并通过获取与每个路径关联的主题的论坛内容来实现。

使用原始主题Markdown(而不是discourse生成的HTML输出),因此您可以使用任何docsify兼容的Markdown。

还包括一个缓存功能来加快加载时间(因为每次请求都要查询论坛可能会非常慢),这可以通过简单的Python字典或通过redis实现。

可选地,可以将一个在内容提供之前要运行的功能传递给Docs对象。

pre_content函数

Docs接受第三个参数:pre_content函数,这是一个在每次文档请求之前运行的功能,你可以用它来,例如,基于某种身份验证来限制访问。

def docs_auth_validation(path):
    if 'profile' not in session:
        return redirect('/login')
    if not session['profile']['admin']:
        return abort(403, 'Only admins may view this page.')

docs = Docs(app, {...}, docs_auth_validation)

此函数有一个参数:当前请求的路径。

配置参考

设置名称 默认值 描述
DOCS_URL_PREFIX /docs 将要提供文档的蓝图URL前缀。
DOCS_HOMEPAGE_TITLE 文档 主页标题
DOCS_INDEX_PATH 有一个默认的index.html文件,其中包含一个简单的docsify示例,你可以通过在此处指定自己的文件路径来替换它。
DOCS_TEMPLATE_PATH 有一个默认模板用于生成文档内容(它附加带有论坛链接和最后更新时间的编辑按钮),但你可以通过在此处输入其路径来替换它。
DOCS_HUMANIZE_LOCALE humanize用于生成“最后更新”字符串(2小时前,一个月前等)。如果你想更改使用的语言,请在此处输入区域设置名称。例如:俄语的ru_RU
DOCS_CACHE_TIMEOUT 60 * 10 缓存每个页面内容的秒数。
DOCS_CACHE_TYPE memory 可以是memory(使用简单的Python字典)或redis
DOCS_CACHE_REDIS_CONN {} 如果使用redis,请提供redis连接参数,这些参数传递给Redis构造函数。
DOCS_CACHE_REDIS_PREFIX discourse_docsify_docs_ 用于redis缓存的前缀
DOCS_DISCOURSE_API_USERNAME Discourse API用户名。需要获取论坛内容。
DOCS_DISCOURSE_API_KEY Discourse API密钥。需要获取论坛内容。
DOCS_DISCOURSE_BASE_URL discourse(论坛)主URL。
DOCS_DISCOURSE_INDEX_TOPIC_ID 索引主题的ID(主题URL末尾的数字)。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

discourse-docsify-1.0.2.tar.gz (10.8 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面