Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bradmontgomery/django-staticflatpages

This is an app sort of like Django's contrib.flatpages, but without the database. It's got a Fallback Middleware that just serves static html documents from your filesystem.
https://github.com/bradmontgomery/django-staticflatpages

django html python static-site

Last synced: 14 days ago
JSON representation

This is an app sort of like Django's contrib.flatpages, but without the database. It's got a Fallback Middleware that just serves static html documents from your filesystem.

Awesome Lists containing this project

README

        

django-staticflatpages
======================

[![Current Release](http://img.shields.io/pypi/v/django-staticflatpages.svg?style=flat-square)](https://pypi.python.org/pypi/django-staticflatpages/)
[![License](http://img.shields.io/pypi/l/django-staticflatpages.svg?style=flat-square)](https://pypi.python.org/pypi/django-staticflatpages/)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg?style=flat-square)](https://github.com/bradmontgomery/django-staticflatpages/releases)

**It's like flatpages, but with templates**

This is like Django's built-in `contrib.flatpages` app, but without the database.
It's just static html documents served from your filesystem.

## Motivation

I've been using the `flatpages` app for a long time, but somewhere along the
line I started keeping my flatpage content (snippets of html) in the git repo
with the rest of my project. Any time I made a change to a flatpage, I'd edit
the file locally, commit the changes, then copy and paste the new content into
the relevant flatpage.

Why not just serve these from my templates directory?

That's what `staticflatpages` does.

## Installation

Install the latest release with pip:

pip install django-staticflatpages

## Compatibility

The most recent version of this app targets Django 2.1+ and Python 3.6+. Download a
[previous release](https://github.com/bradmontgomery/django-staticflatpages/releases/tag/0.5.0)
for older versions of Django.

You can run the test suite with `python manage.py test staticflatpages`, and open an
[Issue on Github](https://github.com/bradmontgomery/django-staticflatpages/issues)
if you run into any problems.

## Configuration

1. Add `staticflatpages` to your `INSTALLED_APPS`.
2. Add `staticflatpages.middleware.StaticFlatpageFallbackMiddleware` to your
`MIDDLEWARE` settings.
3. Create a `staticflatpages` template directory. This should be a
subdirectory of one of the templates in your `TEMPLATES` setting. Any
templates you include here (except for a `base.html`) will get served as
a static page.

For example, assuming your project-level template directory is named
"templates", then:

* The url `/about/` will render `templates/staticflatpages/about.html`
* The url `/about/team/` will render `templates/staticflatpages/about/team.html`
* If you include an index template (`templates/staticflatpages/index.html`), and
no other url maps to `/`, it will get used as your index.

## Sitemaps

This app also supports sitemaps for staticflatpages. To enable these, you'll
need to have `django.contrib.sitemaps` listed in your `INSTALLED_APPS` setting.
Then, set up a sitemap (e.g. in your Root URLconf):

from staticflatpages.sitemaps import StaticFlatpageSitemap

sitemaps = {
'staticflatpages': StaticFlatpageSitemap,
}

Don't forget to include your sitemaps urls as normal, e.g.:

path(
'sitemap-.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'
),

*NOTE*: The `sitemaps` framework also requires the `sites` framework so you'll
need that installed, and you'll also need to define a `SITE_ID`.

## Settings

If you use the sitemaps feature, you may also want to include the following
settings:

* `STATICFLATPAGES_CHANGEFREQ`: Corresponds to the `Sitemap.changefreq`
attribute (defaults to `never`).
* `STATICFLATPAGES_PRIORITY`: Corresponds to the `Sitemap.priority`
attribute (defaults to 0.5).

## Misc

This app could work with with [django-dirtyedit](https://github.com/synw/django-dirtyedit),
which allows you to edit files from the admin (if you're so inclined).

License
-------

This code is distributed under the terms of the MIT license. See the
`LICENSE` file.