フラットページに似ていますが、テンプレートが付いています
これは Django の組み込みcontrib.flatpagesアプリに似ていますが、データベースはありません。ファイルシステムから提供される単なる静的な HTML ドキュメントです。
私はflatpagesアプリを長い間使用してきましたが、いつからかフラットページ コンテンツ (HTML のスニペット) をプロジェクトの残りの部分とともに git リポジトリに保存し始めました。フラットページに変更を加えるたびに、ファイルをローカルで編集して変更をコミットし、新しいコンテンツをコピーして関連するフラットページに貼り付けます。
これらをテンプレート ディレクトリから提供しないのはなぜでしょうか?
それが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を除く) は静的ページとして提供されます。たとえば、プロジェクト レベルのテンプレート ディレクトリの名前が「templates」であるとすると、次のようになります。
/about/ templates/staticflatpages/about.htmlをレンダリングします。/about/team/ templates/staticflatpages/about/team.htmlをレンダリングします。templates/staticflatpages/index.html ) を含め、 /にマップする他の URL がない場合、それがインデックスとして使用されます。 このアプリは、静的フラットページのサイトマップもサポートしています。これらを有効にするには、 INSTALLED_APPS設定にdjango.contrib.sitemapsがリストされている必要があります。次に、サイトマップを設定します (ルート 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ファイルを参照してください。