Flask Extension เพื่อรวมเนื้อหาวาทกรรมที่สร้างขึ้นกับเอกสารในเว็บไซต์ของคุณ โครงการนี้ก่อนหน้านี้มีชื่อว่า 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 คุณต้องมีรหัสหัวข้อดัชนีซึ่งคุณสามารถได้รับจาก Discourse.ubuntu.com หัวข้อดัชนีของคุณจะต้องมีส่วนข้อมูลเมตา เยี่ยมชม 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 ซึ่งคุณสามารถรับได้โดยใช้ Method 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=-1MaxLimitError ใน exceptions.py เพื่อจัดการขีด จำกัด ที่มากเกินไป โดยค่าเริ่มต้นจะทำให้เกิดข้อผิดพลาดเมื่อเกิน 500