Serve static files and django templates in current folder.
This is a command line utility that django-izes the current folder. This is primarily for prototyping, but can also be used for full fledged blog site.
Lets say the current folder contains a bunch of html file, this utility runs a django server, and makes the files available through it. The html files can use django’s powerful template inheritance.
Any html file in the current folder is treated as a django template and is mapped to a URL mapping their location on disk. Eg index.html will become available on /index.html and so on.
Full power of django templates is available to these html files, so they can use template inheritance etc. This make creating a prototype a breeze as multiple files can inherit the look and feel of a common base.html.
djangothis supports configuring django using config.yaml file if present in current folder. It can be used configure middleware, template context processors etc.
If there is a folder named static in current folder, the content of that folder will also become available on /static/ url. So static/style.css will be served on /static/style.css.
This utility also maps request to /favicon.ico to /static/favicon.ico.
views.py and forms.py
Further if file names views.py or forms.py exist, the utility “imports” them, and if those files use importd style “decorated” views or forms, they too become available (example).
Also if there is a ajax.yaml file in current folder, this utility will look for request the requested path in the yaml file, and if it exists, appropriate JSON will be returned.
The current folder can contain a folder cmds, which can have django management commands stored in it, along with an __init__.py.
The command can be executed by running $ djangothis commandname.
djangothis supports theming. Theme can be placed in a special folder _theme. This folder is placed at the beginning of template dirs settings, so any template can be “overridden” by placing in it.
For the purpose of special theme specific static files, they can be placed in side _theme folder, and will be accessible via /theme/ url. Eg if there is a css file _theme/style.css, it can be accessed via /theme/style.css.
With these two features themes can be distributed as self contained folder.
Commands, Views and Forms in Themes
If needed a theme can contain cmds folder, views.py and forms.py which will be included. For this feature to work the _theme folder needs to also contain __init__.py.
The debug server reloads itself when config.yaml or ajax.yaml file is updated. Further any theme can call djangothis.watchfile(file_path) to watch a file for modifications, so that debug server can be reloaded.
Using djangothis as a static site generator
$ wget -m http://localhost:8000
Can be used to create a local mirror.
Replacing jekyll, pelican etc
djangothis can be used to replace jekyll, pelican etc. For this an appropriate views.py file has to be written and placed in the current folder or in _theme folder, which will define views for / or /blog/, that view can read the content of _posts for example, generate appropriate summary and links, define views for post etc, which serve the page.
My person website, amitu.com is powered by this, which used to be jekyll powered. The source is available on github.com/amitu/amitu.github.com, take a look in _theme folder there, which is where all magic is.
Installation and Usage
$ pip install djangothis
To run from any folder that contains files as described above:
$ djangothis Validating models... 0 errors found Django version 1.4.1, using settings None Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.