Skip to main content

Shared Django views for use in Webteam apps

Project description

canonicalwebteam.django\_views
==============================

Views for Django apps, primarily for use in Webteam Django apps.

Installation
------------

You can install this module directly with
``pip install canonicalwebteam.django_views``, or alternatively, include
``canonicalwebteam.django_views`` in ``requirements.txt`` for your app.

TemplateFinder
--------------

``TemplateFinder`` is an extension of ``TemplateView`` which attempts to
load the corresponding templates directly from URLs, without the need to
write a view for each URL.

It can load HTML templates directly, or parse Markdown files that
contain a "wrapper\_template" frontmatter key.

Usage
~~~~~

Here's an example of how to make use of ``TemplateFinder`` in your
Django app:

.. code:: python
# urls.py
from django.conf.urls import url
from canonicalwebteam.django_views import TemplateFinder
# ...
urlpatterns += url(r"$^", TemplateFinder.as_view()),

Template matching
~~~~~~~~~~~~~~~~~

When the app parses a URL, it will look for templates in the following
locations, in order:

- ``/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``

Markdown parsing
~~~~~~~~~~~~~~~~

If the ``TemplateFinder`` encounters a Markdown file (ending ``.md``) it
will look for the following keys in `YAML
frontmatter <https://jekyllrb.com/docs/front-matter/>`__:

- ``wrapper_template`` *mandatory*: (e.g.:
``wrapper_template: /includes/markdown-wrapper.html``) A path to an
HTML template within which to place the parsed markdown content. If
the path doesn't have a leading slash (e.g. "templates/template.html"
or "../templates/template.html"), then ``TemplateFinder`` will search
for the template relative to the location of the Markdown file in
question. If the path
- ``context`` *optional*: (e.g.:
``context: {title: "Welcome", description: "A welcome page"}``) A
dictionary of extra key / value pairs to pass through to the template
context.
- ``markdown_includes`` *optional*: (e.g.:
``markdown_includes: {nav: }``) A mapping of key names to template
paths pointing to Markdown files to include. Each template path will
be parsed, the resulting HTML will be passed in the template context,
under the relevant key.

Here's an example Markdown file:

.. code:: 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).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

canonicalwebteam.django_views-1.2.0.tar.gz (4.0 kB view details)

Uploaded Source

File details

Details for the file canonicalwebteam.django_views-1.2.0.tar.gz.

File metadata

  • Download URL: canonicalwebteam.django_views-1.2.0.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for canonicalwebteam.django_views-1.2.0.tar.gz
Algorithm Hash digest
SHA256 a63468fa98e3fed90a72ccc035ec7b28d225bb4c82ceb439238f107b7a61d587
MD5 b9d2ec698441dead0c3a4e8cc16d6b24
BLAKE2b-256 f4fbbb3c72f23706b4743e9aca6766517e97a90915b14c97bb43ff4a47611c7a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page