มุมมองสำหรับแอพ Django โดยเฉพาะอย่างยิ่งสำหรับใช้ในแอพ WebTeam Django
คุณสามารถติดตั้งโมดูลนี้ได้โดยตรงด้วย pip install canonicalwebteam.django_views หรืออีกทางเลือกหนึ่งรวมถึง canonicalwebteam.django_views ใน requirements.txt . txt สำหรับแอปของคุณ
TemplateFinder เป็นส่วนขยายของ TemplateView ซึ่งพยายามโหลดเทมเพลตที่เกี่ยวข้องโดยตรงจาก URL โดยไม่จำเป็นต้องเขียนมุมมองสำหรับแต่ละ URL
มันสามารถโหลดเทมเพลต HTML โดยตรงหรือแยกวิเคราะห์ไฟล์ markdown ที่มีคีย์ frontmatter "wrapper_template"
นี่คือตัวอย่างของวิธีใช้ประโยชน์จาก TemplateFinder ในแอพ Django ของคุณ:
# urls.py
from django . conf . urls import url
from canonicalwebteam . django_views import TemplateFinder
# ...
urlpatterns += url ( r"$^" , TemplateFinder . as_view ()),เมื่อแอพแยกวิเคราะห์ URL มันจะมองหาแม่แบบในสถานที่ต่อไปนี้ตามลำดับ:
/parent/location/ => templates/parent/location.html/parent/location/ => templates/parent/location/index.html/parent/location/ => templates/parent/location.md/parent/location/ => templates/parent/location/index.md หาก TemplateFinder พบไฟล์ markdown (สิ้นสุด .md ) มันจะค้นหาคีย์ต่อไปนี้ใน Yaml Frontmatter:
wrapper_template บังคับ : (เช่น: wrapper_template: /includes/markdown-wrapper.html ) เส้นทางไปยังเทมเพลต HTML ภายในที่จะวางเนื้อหา markdown ที่แยกวิเคราะห์ หากเส้นทางไม่มีสแลชชั้นนำ (เช่น "เทมเพลต/เทมเพลต. html" หรือ "../templates/template.html") จากนั้น TemplateFinder จะค้นหาเทมเพลตที่สัมพันธ์กับตำแหน่งของไฟล์ markdown ในคำถาม ถ้าเส้นทางcontext เลือก : (เช่น: context: {title: "Welcome", description: "A welcome page"} ) พจนานุกรมของคู่คีย์ / ค่าพิเศษที่จะผ่านไปยังบริบทเทมเพลตmarkdown_includes ตัวเลือก : (เช่น: markdown_includes: {nav: } ) การแมปของชื่อคีย์ไปยังเส้นทางเทมเพลตที่ชี้ไปที่ไฟล์ Markdown เพื่อรวม เส้นทางเทมเพลตแต่ละเส้นทางจะถูกแยกวิเคราะห์ HTML ที่ได้จะถูกส่งผ่านในบริบทของเทมเพลตภายใต้คีย์ที่เกี่ยวข้องนี่คือตัวอย่างไฟล์ Markdown:
---
wrapper_template: "/includes/markdown-wrapper.html"
markdown_includes:
nav: "includes/nav.md"
context:
title: "Welcome"
description: "A welcome page"
---
Welcome to my website.
## GitHub
I also have [a GitHub page](https://github.com/me).