canonicalwebteam.discourse
5.7.3: Read href from masked links in metadata
烧瓶扩展以整合到您网站的文档生成的话语内容。该项目以前被命名为discourse_docs 。
有关如何在话语中编写文档页面以供本模块编写文档页面以及如何配置网站使用该模块的文档页面。
可以在示例文件夹中找到用于examples页面的示例烧瓶模板。有关更多信息,请参考该文件夹中的读数。
使用PIP安装项目: pip install canonicalwebteam.discourse
您可以使用自己的设置添加项目上的扩展名,至少可以替换base_url和index_topic_id :
import talisker . requests
from canonicalwebteam . discourse import DiscourseAPI , Tutorials , TutorialParser
app = Flask ( "myapp" )
session = talisker . requests . get_session ()
discourse = Tutorials (
parser = TutorialParser (
api = DiscourseAPI (
base_url = "https://forum.example.com/" , session = session
),
index_topic_id = 321 ,
url_prefix = "/docs" ,
),
document_template = "docs/document.html" ,
url_prefix = "/docs" ,
)
discourse . init_app ( app )添加此信息后,您需要将file document.html添加到模板文件夹中。
对于本地开发,最好使用Ubuntu.com等网站项目之一测试该模块。有关更多信息,请遵循本指南(仅内部)。
可以使用TOX进行测试:
pip3 install tox # Install tox
tox # Run tests
tox -e lint # Check the format of Python code
tox -e format # Reformat the Python code 因为您正在查看一个受保护的主题,所以您必须提供api_key和api_username 。您还需要一个索引主题ID,您可以从course.ubuntu.com获得。您的索引主题必须包含一个元数据部分。请访问GaintParser以获取有关该结构的更多信息。鼓励您使用不与存在的蓝图相撞的蓝图名称。这些模板必须匹配所示参数中提供的模板。
这是实现的示例:
engage_pages = EngagePages (
api = DiscourseAPI (
base_url = "https://discourse.ubuntu.com/" ,
session = session ,
get_topics_query_id = 14 ,
api_key = DISCOURSE_API_KEY , # replace with your API key
api_username = DISCOURSE_API_USERNAME , # replace with correspoding username
),
category_id = 51 ,
page_type = "engage-pages" , # one of ["engage-pages", "takeovers"]
exclude_topics = [] # this is a list of topic ids that we want to exclude from Markdown error checks
additional_metadata_validation = [] # list of additional keys in the metadata table that you want to validate existence for e.g. language
)在您的项目中,您需要创建自己的观点:
app . add_url_rule (
"/engage" , view_func = build_engage_index ( engage_pages )
)
app . add_url_rule (
"/engage/<path>" , view_func = single_engage_page ( engage_pages )
)build_engage_index将是您的参与页列表的视图,您可以使用方法EngagagePages(args).get_index()获得该列表。single_engage_page将是您的单个参与页面视图,您可以使用EngagePages(args).get_engage_page(path)获得它同样,对于收购,您只需要通过page_type="takeovers"即可。
EngagePages(args).get_index()的收购列表。EngagePages(args).parse_active_takeovers() 。 get_index提供了两个附加的参数limit和offset ,以提供分页功能。他们分别默认为50和0。limit=-1exceptions.py下使用MaxLimitError来处理过多的限制。默认情况下,它会超过500时会引起错误