WebSupport类¶
- class sphinxcontrib.websupport.WebSupport[源代码]¶
Web支持包的主API类。与Web支持包的所有交互都应通过此类进行。
类采用以下关键字参数:
- 源目录
包含RestructuredText源文件的目录。
- 积木
应将生成数据和静态文件的目录放在其中。在创建
WebSupport
将用于生成数据的对象。- 数据中心
Web支持数据所在的目录。在创建
WebSupport
将用于检索数据的对象。- 搜索
这可能包含引用要使用的内置搜索适配器的字符串(例如“xapian”)或子类的实例。
BaseSearch
.- 存储
它可以包含表示数据库URI的字符串,也可以包含子类的实例。
StorageBackend
. 如果不提供,将创建新的sqlite数据库。- moderation_callback
添加未显示的新注释时可调用的调用。它必须接受一个参数:表示添加的注释的字典。
- 静音
是否应在其他位置创建静态文件 而不在
'/static'
,这应该是一个具有该位置名称的字符串(例如builddir + '/static_files'
)备注
如果您指定
staticdir
,您通常需要调整staticroot
因此。- 静息根
如果静态文件不是从
'/static'
,这应该是一个具有该位置名称的字符串(例如'/static_files'
)- 文档根目录
如果文档不是从URL的基本路径提供的,那么应该是一个指定该路径的字符串(例如
'docs'
)
在 1.6 版本发生变更: websupport类从sphinx.websupport移到sphinxcontrib.websupport。请加 sphinxcontrib-websupport
在依赖项中打包并使用移动类。
方法¶
- WebSupport.build()[源代码]¶
建立文档。将数据放入 outdir 目录。像这样使用:
support = WebSupport(srcdir, builddir, search='xapian') support.build()
这将从中读取重组后的文本文件 srcdir . 然后它将构建泡菜和搜索索引,将它们放入 builddir . 它还将把节点数据保存到数据库中。
- WebSupport.get_document(docname, username='', moderator=False)[源代码]¶
从pickle加载并返回文档。文档将是可用于呈现模板的dict对象:
support = WebSupport(datadir=datadir) support.get_document('index', username, moderator)
在大多数情况下 docname 将从请求路径获取并直接传递给此函数。在烧瓶里,应该是这样的:
@app.route('/<path:docname>') def index(docname): username = g.user.name if g.user else '' moderator = g.user.moderator if g.user else False try: document = support.get_document(docname, username, moderator) except DocumentNotFoundError: abort(404) render_template('doc.html', document=document)
返回的文档dict包含在模板呈现期间要使用的以下项。
body :作为HTML的文档主体
侧边栏 :文档的边栏为HTML
雷巴 :包含相关文档链接的DIV
标题 :文档标题
css :指向sphinx使用的css文件的链接
脚本 :包含注释选项的javascript
这提出
DocumentNotFoundError
如果文档匹配 docname 找不到。- 参数:
docname -- 要加载的文档的名称。
- WebSupport.get_data(node_id, username=None, moderator=False)[源代码]¶
获取与关联的注释和源 node_id .如果 username 投票信息将包含在返回的评论中。默认的commentbackend返回带有两个键的dict, 来源 和 评论 . 来源 是节点的原始源,并用作用户可以添加的建议的起点。 评论 是表示注释的dict列表,每个都具有以下项:
键
目录
文本
注释文本。
用户名
与注释一起存储的用户名。
身份证件
注释的唯一标识符。
评级
评论的当前评级。
年龄
添加注释后的时间(秒)。
时间
包含时间信息的口述。它包含以下键:年、月、日、小时、分钟、秒、iso和delta。 iso 时间格式是否为ISO 8601格式? delta 是一种可打印形式,说明注释的时间(例如“3小时前”)。
投票
如果 user_id 如果给出,这将是一个表示投票的整数。1表示赞成票,1表示反对票,0表示反对票。
结点
注释附加到的节点的ID。如果注释的父级是另一个注释而不是节点,则此值为空。
起源
如果注释未附加到节点,则该注释附加到的注释的ID。
儿童
所有子项的列表,格式为。
proposal_diff
当前源和用户建议源之间的差异的HTML表示。
- 参数:
node_id -- 要获取注释的节点的ID。
username -- 查看注释的用户的用户名。
moderator -- 用户是否是主持人。
- WebSupport.add_comment(text, node_id='', parent_id='', displayed=True, username=None, time=None, proposal=None, moderator=False)[源代码]¶
向节点或其他注释添加注释。以与相同的格式返回注释
get_comments()
. 如果将注释附加到节点,请使用node关键字参数传入节点的ID(作为字符串)::comment = support.add_comment(text, node_id=node_id)
如果注释是另一个注释的子级,请使用parent关键字参数提供父级的ID(作为字符串)::
comment = support.add_comment(text, parent_id=parent_id)
如果要将用户名与注释一起存储,请传入可选的 username 关键字参数:
comment = support.add_comment(text, node=node_id, username=username)
- 参数:
parent_id -- 注释父级的前缀ID。
text -- 注释的文本。
displayed -- 出于缓和的目的
username -- 进行注释的用户的用户名。
time -- 创建注释的时间,默认为现在。
- WebSupport.process_vote(comment_id, username, value)[源代码]¶
处理用户的投票。Web支持包依赖API用户执行身份验证。API用户通常会收到来自表单的注释ID和值,然后确保用户经过身份验证。必须传入唯一的用户名,该用户名还将用于检索用户过去的投票数据。一个例子,再次在烧瓶中:
@app.route('/docs/process_vote', methods=['POST']) def process_vote(): if g.user is None: abort(401) comment_id = request.form.get('comment_id') value = request.form.get('value') if value is None or comment_id is None: abort(400) support.process_vote(comment_id, g.user.name, value) return "success"
- 参数:
comment_id -- 正在投票的评论
username -- 用户投票的唯一用户名
value -- 赞成票1,反对票1,反对票0。
- WebSupport.get_search_results(q)[源代码]¶
执行查询搜索 q ,并创建一组搜索结果。然后将搜索结果呈现为HTML,并返回一个上下文dict,就像
get_document()
::document = support.get_search_results(q)
- 参数:
q -- 搜索查询