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]
节的名字很重要(Homepage
、URLs
和Navigation
)。
在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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 848d7ce5d3cf1de5adc71f781c85488a51245f10c54db250830d87dd0a83cc2f |
|
MD5 | 029071d1345d98e48a307d1873805d2f |
|
BLAKE2b-256 | 4b9ba455096aefaa348365d2278697eab8ce3b40881c75450a870a1c57b2a2ea |