มันเหมือนกับหน้าแบน แต่มีเทมเพลต
นี่เป็นเหมือนแอป contrib.flatpages ในตัวของ Django แต่ไม่มีฐานข้อมูล มันเป็นเพียงเอกสาร html แบบคงที่ที่แสดงจากระบบไฟล์ของคุณ
ฉันใช้แอป flatpages มาเป็นเวลานาน แต่ในบางจุดฉันเริ่มเก็บเนื้อหา Flatpage ของฉัน (ตัวอย่าง HTML) ไว้ใน git repo พร้อมกับส่วนที่เหลือของโปรเจ็กต์ของฉัน ทุกครั้งที่ฉันทำการเปลี่ยนแปลงในแฟลตเพจ ฉันจะแก้ไขไฟล์ในเครื่อง ยอมรับการเปลี่ยนแปลง จากนั้นคัดลอกและวางเนื้อหาใหม่ลงในแฟลตเพจที่เกี่ยวข้อง
ทำไมไม่ให้บริการสิ่งเหล่านี้จากไดเร็กทอรีเทมเพลตของฉันล่ะ?
นั่นคือสิ่งที่ staticflatpages ทำ
ติดตั้งรุ่นล่าสุดด้วย pip:
pip install django-staticflatpages
แอปเวอร์ชันล่าสุดนี้กำหนดเป้าหมาย Django 2.1+ และ Python 3.6+ ดาวน์โหลดรุ่นก่อนหน้าสำหรับ Django เวอร์ชันเก่า
คุณสามารถรันชุดทดสอบด้วย python manage.py test staticflatpages และเปิดปัญหาบน Github หากคุณประสบปัญหาใดๆ
staticflatpages ให้กับ INSTALLED_APPS ของคุณstaticflatpages.middleware.StaticFlatpageFallbackMiddleware ให้กับการตั้งค่า MIDDLEWARE ของคุณstaticflatpages นี่ควรเป็นไดเรกทอรีย่อยของหนึ่งในเทมเพลตในการตั้งค่า TEMPLATES ของคุณ เทมเพลตใดๆ ที่คุณรวมไว้ที่นี่ (ยกเว้น base.html ) จะทำหน้าที่เป็นเพจคงที่ตัวอย่างเช่น สมมติว่าไดเรกทอรีเทมเพลตระดับโครงการของคุณชื่อ "เทมเพลต" ดังนั้น:
/about/ จะแสดง templates/staticflatpages/about.html/about/team/ จะแสดง templates/staticflatpages/about/team.htmltemplates/staticflatpages/index.html ) และไม่มีแมป URL อื่นไปยัง / ก็จะใช้เป็นดัชนีของคุณ แอพนี้ยังรองรับแผนผังเว็บไซต์สำหรับหน้าแบนคงที่ หากต้องการเปิดใช้งานสิ่งเหล่านี้ คุณจะต้องมี django.contrib.sitemaps แสดงรายการอยู่ในการตั้งค่า INSTALLED_APPS จากนั้น ตั้งค่าแผนผังไซต์ (เช่น ใน Root URLconf):
from staticflatpages.sitemaps import StaticFlatpageSitemap
sitemaps = {
'staticflatpages': StaticFlatpageSitemap,
}
อย่าลืมใส่ URL แผนผังไซต์ของคุณตามปกติ เช่น:
path(
'sitemap-<section>.xml',
sitemaps_views.sitemap,
{'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'
),
path(
'sitemap.xml',
sitemaps_views.index,
{'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'
),
หมายเหตุ : เฟรมเวิร์ก sitemaps ยังต้องการเฟรมเวิร์ก sites ด้วย ดังนั้นคุณจะต้องติดตั้งเฟรมเวิร์กดังกล่าว และคุณจะต้องกำหนด SITE_ID ด้วย
หากคุณใช้คุณลักษณะแผนผังไซต์ คุณอาจต้องการรวมการตั้งค่าต่อไปนี้ด้วย:
STATICFLATPAGES_CHANGEFREQ : สอดคล้องกับแอตทริบิวต์ Sitemap.changefreq (ค่าเริ่มต้นเป็น never )STATICFLATPAGES_PRIORITY : สอดคล้องกับแอตทริบิวต์ Sitemap.priority (ค่าเริ่มต้นคือ 0.5) แอปนี้สามารถทำงานร่วมกับ django-dirtyedit ซึ่งช่วยให้คุณสามารถแก้ไขไฟล์จากผู้ดูแลระบบได้ (หากคุณมีแนวโน้มเช่นนั้น)
รหัสนี้เผยแพร่ภายใต้เงื่อนไขของใบอนุญาต MIT ดูไฟล์ LICENSE