Flask Extension Docs에 생성 된 담론 내용을 귀하의 웹 사이트에 통합합니다. 이 프로젝트는 이전에 discourse_docs 로 지명되었습니다.
이 모듈의 소비를 위해 담론에 문서 페이지를 작성하는 방법에 대한 문서와 모듈을 사용하도록 웹 사이트를 구성하는 방법은 표준 담론에서 찾을 수 있습니다.
문서 페이지의 플라스크 템플릿 examples 폴더에서 찾을 수 있습니다. 자세한 내용은 해당 폴더의 readme를 참조하십시오.
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 ) 이 추가되면 파일 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 제공해야합니다. 또한 indecours.ubuntu.com에서 얻을 수있는 색인 주제 ID가 필요합니다. 인덱스 주제에는 메타 데이터 섹션이 포함되어야합니다. 구조에 대한 자세한 내용은 EngageParser를 방문하십시오. 존재하는 청사진과 충돌하지 않는 청사진 이름을 사용하는 것이 좋습니다. 템플릿은 표시된 매개 변수에 제공된 템플릿과 일치해야합니다.
다음은 구현의 예입니다.
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 Engage Pages 목록에 대한 귀하의보기가 될 것인데, Method EngagagePages(args).get_index() 사용하여 얻을 수 있습니다.single_engage_page 단일 Engage Pages보기가되지만 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=-1 통과 할 수 있습니다.exceptions.py 에서 MaxLimitError 사용하십시오. 기본적으로 500을 능가하면 오류가 발생합니다.