Lightweight jinja2 template prototyping server
Project description
Description
Breakdown is a lightweight python webserver that parses jinja2 templates. It’s intended to be used by designers for doing rapid prototyping.
Basic Usage
Breakdown needs a templates directory and a static directory to serve from. If your working directory contains these, you can simply run breakdown with no arguments:
$ breakdown
Or, you can specify the path to a directory containing templates and static:
$ breakdown /path/to/project
Breakdown will also work with a django project structure. If the project path contains an apps directory, breakdown will automatically detect this and combine the static and templates directories for each django app. You’ll also get a listing of the directories it found. Here’s the output of running breakdown on a django project with two apps: ‘mainsite’ and ‘blog’:
$ breakdown ~/django/myproject Serving templates from: /Users/josh/django/myproject/apps/blog/templates /Users/josh/django/myproject/apps/mainsite/templates Serving static data from: /Users/josh/django/myproject/apps/blog/static /Users/josh/django/myproject/apps/mainsite/static
Template Context Objects
When loading a template, breakdown will attempt to load a json dictionary of the same name from the context directory (context by default) and add it to the page context. For example, when loading base.html breakdown will try to load <project root>/context/base.json, and when loading blog/article_detail.html breakdown will look for <project root>/context/blog/article_detail.json.
Objects defined in a context dictionary become available to the template. For example, if we define base.json like this:
{ "request": { "user": { "name":"Austin", "member": "Member #4812" } }, "object": { "id": 555, "title": "Excellent Blog Post" } }
then request and object become available to the base.html template, and {{request.user.name}} yields Austin.
You can specify a function by adding a key with trailing parentheses:
{ "request": { "user": { "name":"Austin", "is_authenticated()": true, "birth_year()": 1982, "middle_name()": "David", "member": "Member #4812" } } }
The trailing parentheses are removed, and now {{request.user.is_authenticated()}} returns True. Functions defined in this way ignore any arguments and return the value specified in the json dictionary. {{request.user.is_authenticated(arg1, arg2, arg3)}} also returns True.
Viewing Templates
Once breakdown is running, it will print the local URL the webserver is listening on:
Server running at http://127.0.0.1:5000 ...
You can now view templates in your browser by navigating to http://127.0.0.1:5000. However, you won’t see anything here unless one of your template directories contains a file named index.html. The URL of any template (besides index.html) will be identical to its filename, with all relative paths preserved. Below is an example of template filenames and their corresponding URL on the local server:
Template |
URL |
index.html |
|
article.html |
|
blog/index.html |
|
blog/post.html |
Note: The server will accept template URLs with or without .html appended to them
Additional Features
CleverCSS
Breakdown also supports automatic CleverCSS parsing. If the file foo.css is requested and not found, breakdown will then look for a matching foo.clevercss and compile it to vanilla css on the fly.
Advanced
- Command line options:
- -h, --help
show this help message and exit
- -p PORT, --port=PORT
run server on an alternate port (default is 5000)
- -m, --media
treat MEDIA_URL as STATIC_URL in templates
- -v, --version
display the version number and exit
- -c DIR, --context_dir_name=DIR
set the directory name for context object files (default is context)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file breakdown-1.0.4.tar.gz
.
File metadata
- Download URL: breakdown-1.0.4.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ea98e3d007129d7f77e722a14bab10c459732cdc55096268cb6e50813e54db1 |
|
MD5 | 297a0700b01e7090a2e1d5409aa2ac83 |
|
BLAKE2b-256 | 57c970d36d6047eb759ff8f9df07c9ddba8e788a9d3d0214365d1a21941b66ce |