تمديد Flask لدمج محتوى الخطاب الذي تم إنشاؤه إلى مستندات إلى موقع الويب الخاص بك. تم تسمية هذا المشروع سابقًا باسم 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 . تحتاج أيضًا إلى معرف موضوع فهرس ، والذي يمكنك الحصول عليه من Smoutter.ubuntu.com. يجب أن يحتوي موضوع الفهرس الخاص بك على قسم بيانات التعريف. تفضل بزيارة EngingParser لمزيد من المعلومات حول الهيكل. نشجعك على استخدام اسم مخطط لا يصطدم بمخططات موجودة. يجب أن تتطابق القوالب مع تلك الواردة في المعلمات المشار إليها.
فيما يلي مثال على التنفيذ:
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 هو عرضك لقائمة صفحات المشاركة ، والتي يمكنك الحصول عليها باستخدام 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