Package: djangothis
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.Read:djangothis for blogging.Django TemplatesAny 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.Configdjangothis supports configuring django using config.yaml file if present in
current folder. It can be used configure middleware, template context
processors etc.Static filesIf 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.pyFurther if file names views.py or forms.py exist, the utility “imports” them,
and if those files useimportdstyle
“decorated” views or forms, they too become available (example).Fake AjaxAlso 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.Custom Tag LibrariesA folder named templatetags in current folder can be created with __init__.py
and django template tag libraries, and djangothis will make them available to
your templates.Custom CommandsThe current folder can contain a folder cmds, which can havedjango management
commandsstored in it, along with an __init__.py.The command can be executed by running $ djangothis commandname.Themesdjangothis 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, Custom TemplateTags and Forms in ThemesIf needed a theme can contain cmds folder, templatetags folder, views.py and
forms.py which will be included. For this feature to work the _theme folder
needs to also contain __init__.py.Auto ReloadThe 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:8000Can be used to create a local mirror.Replacing jekyll, pelican etcdjangothis 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.comis powered by this, which
used to be jekyll powered. The source is available ondjangothis-jekyll.Example siteamitu.com,source.html5 boilerplate for djangothis.Installation and UsageTo install:$ pip install djangothisTo 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.